我遇到的情况与我目前对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/

10-11 00:44