to Kevin_qing() 
但是他还是可以一些普通操作的呀???

解决方案 »

  1.   

    static本身说明了成员函数的内存模型,它如其他关于函数内存模型的修饰描述不统一,所以编译器不允许其他关于成员函数内存模型的描述
      

  2.   

      尽态成员是属于类本身,而不是属于类对象,你可以在类中声明它,但是使用它是没有意义的,做相同的事情你可以用enum{}
      

  3.   

    通俗的说:每一个非静态成员函数都明确知道它的调用所指向的实例对象,而静态成员函数根本不关心实例对象本身,而只有明确是哪一个实例对象才能有对应相应的const属性可言。
      

  4.   

    接上:
    const属性要求不允许访问所有非const成员,包括static和非static成员变量,如果没有实例就不会有非static成员变量,那么编译器就无法保证const的完整性。
      

  5.   

    to caigzhi(caigzhi):
        我的意思是为何不能在静态成员函数的基础上加上const属性,这样对静态成员函数的限制更加严格(不能修改普通成员),这样在逻辑上是讲得通得。但是??????
      

  6.   

    to caigzhi(caigzhi):
        const属性是可以访问static成员的,而且可以修改之
      

  7.   

    或许C++标准就是这样规定的。你想,const是独立于实例的,那还有什么必要让他别修改普通成员呢?
      

  8.   

    Sorry,我是说static是独立于实例的。
      

  9.   

    to steedhorse(晨星)
       我想要的效果是如果这个类的某个实例被声明为const,这时可以调用这个静态函数了(未经证实的乱说)
      

  10.   

    类的成员函数的const关键字的意义是,该成员函数不能修改该对象的成员变量,因此,const的成员函数是与对象相关的(密不可分)。而static成员函数是与对象不相关的,因此static成员函数与const成员函数是“互斥”的。因此静态成员函数为什么不能为const。--Jady
      

  11.   

    谢谢Jady()的回答,希望有更好的回答
      

  12.   

    高手:
    解决一个问题先:http://www.csdn.net/Expert/topic/471/471434.shtm
      

  13.   

    我想到一个答案(是想到,非真理)希望大家评评,
       就是static没有this指针,而const一般要求有this指针的,当编译器调用一个静态const成员函数(假释有),不知到要不要给他传this指针,所以干脆就不允许了
      

  14.   

    高手:
    解决一个问题先:
    http://www.csdn.net/Expert/topic/470/470143.shtm
      

  15.   

    这肯定是C++设计相关的,与编译器无关。
    我参照了《The C++ Programming Language》关于类的第十章得到这样的解释:
    应该明白函数调用首先要找到入口,
    静态成员函数没有this指针,他并不需要this来确定入口;
    const成员函数的需要this(为const X* const)来找到相应的函数入口。
    所以二者在C++设计上就是矛盾的
      

  16.   

    caigzhi(caigzhi) (2002-1-11 13:14:01) 的观点是从语言设计逻辑的角度,而不是语言制定标准的角度考虑的。
      

  17.   

    从使用者角度理解Jady可以说是给出了最好的答案
      

  18.   

    谢谢caigzhi(caigzhi),不知还有没有其他见解
      

  19.   

    高手:可以搞定这个!!!
    http://www.csdn.net/Expert/topic/470/470143.shtm