C2662编译错误

出现C2662错误的原因是调用了一个常量对象的非常函数举个例子如下
class C
{
public:
   void func1();       //非常函数
   void func2() const; //常函数
} const d; //还可以这样定义常量对象
const C c;

//如果如下面调用
c.func1();//错误
d.func1();//错误
会出现编译错误,为什么呢,我们想一下,
因为c,d是常量对象,那么这两个对象内的成员变量的值就不能改动,如果你用c,d调用它们的非常量函数,就不能保证这个函数是否改动了成员变量的值.
而常函数的功能我们是知道的,常函数如func2的定义方式就是常函数,它内部是不允许改变成员变量的值的.
所以总结如下,常量对象只能调用常函数

你可能感兴趣的:(VC,编译链接错误或警告)