我试图为我的目的包装类似于Qt的共享数据指针的东西,并且经过测试我发现当应该调用const函数时,选择了它的非const版本.
我正在使用C++ 0x选项进行编译,这里是一个最小的代码:
struct Data {
int x() const {
return 1;
}
};
template <class T>
struct container
{
container() {
ptr = new T();
}
T & operator*() {
puts("non const data ptr");
return *ptr;
}
T * operator->() {
puts("non const data ptr");
return ptr;
}
const T & operator*() const {
puts("const data ptr");
return *ptr;
}
const T * operator->() const {
puts("const data ptr");
return ptr;
}
T* ptr;
};
typedef container<Data> testType;
void …Run Code Online (Sandbox Code Playgroud) 我在一些代码中注意到了一段时间的以下语法:
if( NULL == var){
//...
}
Run Code Online (Sandbox Code Playgroud)
要么
if( 0 == var){
//...
}
Run Code Online (Sandbox Code Playgroud)
和类似的事情.
有人可以解释为什么写这个的人选择这种符号而不是常用的var == 0方式)?
这是一种风格问题,还是以某种方式影响性能?