首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

静态成员函数为啥不能const

2012-10-11 
静态成员函数为何不能const?C/C++ codeclass AAA{public:static void display(void) const{printf(m_a1 v

静态成员函数为何不能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这个修饰符,用于静态成员函数没有意义。

我说明白了么??

热点排行