我遇到的情况与我目前对C++中的方法的理解相冲突。
我正在研究Ivor Horton的“Visual C++ 2010入门”(Wrox出版社)。在页449,示例8_03,一种方法定义为:
double Volume() const {
return m_Length * m_Width * m_Height;
}
我将修饰符重新排列为:
double **const** Volume() {
return m_Length * m_Width * m_Height;
}
从我的C#和Java背景出发,我曾期望const的位置无关紧要,但是在编译时,我收到了错误消息:
error C2662: 'CBox::Volume' : cannot convert 'this' pointer from
'const CBox' to 'CBox &'
当我将订单返回给Ivor的方式时,错误消失。
顺序实际上是否有所不同,这不是一些外来的错误吗?如果顺序很重要,一个人如何记住正确的位置?
谢谢,
史考特
最佳答案
当将const
放在成员方法的名称之后时,即表明this
指针是常量。也就是说,原始声明指出CBox::Volume()
方法不会更改调用它的CBox
对象。
错误的最可能来源是在CBox::Volume()
或该const CBox
的另一个const
方法内部调用了CBox
函数。
关于c++ - C++中方法返回类型和修饰符的顺序重要吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5266228/