- 论坛徽章:
- 0
|
在条款25中,作者欲通过member function templates(简称member templates)来提供泛型隐式转换,以达到以下效果:
void f(int x);
void f(string *ps);
f(NULL); // 实际调用f(string *ps)
具体实现如下:
const class {
public:
template<class T> // 可以转换任何类型
operator T*() const // 的null非成员指针
{ return 0; }
template<class C, class T> // 可以转换任何类型
operator T C::*() const // 的null成员指针
{ return 0; }
private:
void operator&() const; // 不能取其地址
} NULL;
请问:转换函数(operator T*() 和 operator T c::*() )为什么不是 return static_cast<T*>(0) 而是 return 0?
谢谢。
[ 本帖最后由 thinshootout 于 2006-10-5 15:04 编辑 ] |
|