相关疑难解决方法(0)

调用const函数而不是非const版本

我试图为我的目的包装类似于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)

c++ const

24
推荐指数
2
解决办法
2万
查看次数

为什么在变量之前将常量放在比较中?

我在一些代码中注意到了一段时间的以下语法:

if( NULL == var){
   //...
}
Run Code Online (Sandbox Code Playgroud)

要么

if( 0 == var){
  //...
}
Run Code Online (Sandbox Code Playgroud)

和类似的事情.

有人可以解释为什么写这个的人选择这种符号而不是常用的var == 0方式)?

这是一种风格问题,还是以某种方式影响性能?

c c++ syntax comparison

18
推荐指数
5
解决办法
6974
查看次数

标签 统计

c++ ×2

c ×1

comparison ×1

const ×1

syntax ×1