静态成员函数为什么不能为const??? to Kevin_qing() 但是他还是可以一些普通操作的呀??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static本身说明了成员函数的内存模型,它如其他关于函数内存模型的修饰描述不统一,所以编译器不允许其他关于成员函数内存模型的描述 尽态成员是属于类本身,而不是属于类对象,你可以在类中声明它,但是使用它是没有意义的,做相同的事情你可以用enum{} 通俗的说:每一个非静态成员函数都明确知道它的调用所指向的实例对象,而静态成员函数根本不关心实例对象本身,而只有明确是哪一个实例对象才能有对应相应的const属性可言。 接上:const属性要求不允许访问所有非const成员,包括static和非static成员变量,如果没有实例就不会有非static成员变量,那么编译器就无法保证const的完整性。 to caigzhi(caigzhi): 我的意思是为何不能在静态成员函数的基础上加上const属性,这样对静态成员函数的限制更加严格(不能修改普通成员),这样在逻辑上是讲得通得。但是?????? to caigzhi(caigzhi): const属性是可以访问static成员的,而且可以修改之 或许C++标准就是这样规定的。你想,const是独立于实例的,那还有什么必要让他别修改普通成员呢? Sorry,我是说static是独立于实例的。 to steedhorse(晨星) 我想要的效果是如果这个类的某个实例被声明为const,这时可以调用这个静态函数了(未经证实的乱说) 类的成员函数的const关键字的意义是,该成员函数不能修改该对象的成员变量,因此,const的成员函数是与对象相关的(密不可分)。而static成员函数是与对象不相关的,因此static成员函数与const成员函数是“互斥”的。因此静态成员函数为什么不能为const。--Jady 谢谢Jady()的回答,希望有更好的回答 高手:解决一个问题先:http://www.csdn.net/Expert/topic/471/471434.shtm 我想到一个答案(是想到,非真理)希望大家评评, 就是static没有this指针,而const一般要求有this指针的,当编译器调用一个静态const成员函数(假释有),不知到要不要给他传this指针,所以干脆就不允许了 高手:解决一个问题先:http://www.csdn.net/Expert/topic/470/470143.shtm 这肯定是C++设计相关的,与编译器无关。我参照了《The C++ Programming Language》关于类的第十章得到这样的解释:应该明白函数调用首先要找到入口,静态成员函数没有this指针,他并不需要this来确定入口;const成员函数的需要this(为const X* const)来找到相应的函数入口。所以二者在C++设计上就是矛盾的 caigzhi(caigzhi) (2002-1-11 13:14:01) 的观点是从语言设计逻辑的角度,而不是语言制定标准的角度考虑的。 从使用者角度理解Jady可以说是给出了最好的答案 谢谢caigzhi(caigzhi),不知还有没有其他见解 高手:可以搞定这个!!!http://www.csdn.net/Expert/topic/470/470143.shtm 测试 多线程请教一个简单问题 ATL 调用 共享dll 编译出错 请教如何编程实现让某一个exploer打开指定的目录,即模拟在这个explorer中双击某个指定目录 怎样向IE的控件发消息? 救命啊!怎么建立数组参数? Visual C++ 编程技巧大全 为什么GetModuleHandle("f:\\temp\\bin\\bin\\webPicker.dll")总是返回为0 怎么设置DLL的基地址? 请问:如何控制滚动条 滑块 的大小?(注意:是滑块不是整个滚动条) 偶见一贴,感慨颇深... 建议到这里来的人先学好语文
const属性要求不允许访问所有非const成员,包括static和非static成员变量,如果没有实例就不会有非static成员变量,那么编译器就无法保证const的完整性。
我的意思是为何不能在静态成员函数的基础上加上const属性,这样对静态成员函数的限制更加严格(不能修改普通成员),这样在逻辑上是讲得通得。但是??????
const属性是可以访问static成员的,而且可以修改之
我想要的效果是如果这个类的某个实例被声明为const,这时可以调用这个静态函数了(未经证实的乱说)
解决一个问题先:http://www.csdn.net/Expert/topic/471/471434.shtm
就是static没有this指针,而const一般要求有this指针的,当编译器调用一个静态const成员函数(假释有),不知到要不要给他传this指针,所以干脆就不允许了
解决一个问题先:
http://www.csdn.net/Expert/topic/470/470143.shtm
我参照了《The C++ Programming Language》关于类的第十章得到这样的解释:
应该明白函数调用首先要找到入口,
静态成员函数没有this指针,他并不需要this来确定入口;
const成员函数的需要this(为const X* const)来找到相应的函数入口。
所以二者在C++设计上就是矛盾的
http://www.csdn.net/Expert/topic/470/470143.shtm