我遇到了一種與我目前對C++中方法的理解相沖突的情況。C++中的方法返回類型和修飾符的順序很重要嗎?
我正在通過Ivor Horton的「Beginning Visual C++ 2010」(Wrox Press)工作。
double Volume() const {
return m_Length * m_Width * m_Height;
}
我已經重新安排了改性劑:在449頁中的示例8_03,一個方法被定義
double **const** Volume() {
return m_Length * m_Width * m_Height;
}
從我的C#和Java的背景,我曾預計常量的位置是無關緊要,但在彙編時我收到了錯誤:
error C2662: 'CBox::Volume' : cannot convert 'this' pointer from
'const CBox' to 'CBox &'
當我將訂單返回給Ivor時,錯誤消失。
這個順序實際上是否有所作爲,這不是一些奇特的錯誤?如果訂單確實重要,那麼人們如何記住正確的立場?
謝謝,
斯科特
啊,是的!這就是它 - 編譯器對此和const感到不安。因此,將const附加到方法末尾的事實只是一個標準規則...... const在結束時意味着這是常量?我猜Java/C#的寬鬆世界太寬容了:) – 2011-03-10 22:45:37
@Scott:Java不是太寬容,但它沒有類型限定符。當使用'const'時,重要的是你正在修改'int const *'的哪一部分與'int * const'不一樣,因爲const_ness適用於不同的事物。同樣,成員函數聲明中'const'的位置也是有意義的。注意,「成員函數」 - 如果你不斷地調用它們的方法,你會不自覺地將C++看作是Java的另一種帽子,它不是:-) – 2011-03-11 00:04:59