静态成员函数为何不能const?
- C/C++ code
class AAA{public: static void display(void) const { printf("m_a1 value is %d\n", m_a1); // 没有const,运行OK. // 有了const,报以下错. // error C2272: 'display' : modifiers not allowed on static member functions // 问题一: // 译语个人理解是"修改不允许发生在静态成员函数里" // 但明明没有修改什么. // 报错提示语究竟是什么意思? } static int m_a1;};int AAA::m_a1 = 100;int _tmain(int argc, _TCHAR* argv[]){ AAA::display(); return 0;}
[解决办法]
静态函数不属于这个类的任何一个对象,使用const就表明不能修改调用该函数的对象。前后矛盾了,个人意见,不知道对不对
[解决办法]
你对那个英文的理解是错误的,我的理解是:
"修饰符不可用于静态成员函数"
看书的时候认真点(前提是选对书),这问题就应该直到答案,
或者多动动脑,思考一下应该也能知道,说说我的观点:
书上至少应该说过,const的这种用法(indicate 不会修改当前对象的内容),
只能用于类的一般成员函数,而不能用于静态成员函数。
静态成员函数有什么不同?根本上说,静态成员函数里面没有this指针,
就是说,相当于一个定义于该类内部的普通(非成员)函数,
这也是为什么静态成员函数不能访问成员变量的原因,
所以,静态成员函数根本不存才“改变this指向的内容”这个概念,
结论(at last):const这个修饰符,用于静态成员函数没有意义。
我说明白了么??