新手在這裏!const func(const scalar&a)const中的三個「const」,爲什麼?
我正在讀代碼,我看到作者經常寫一個成員函數作爲
const int func (const scalar& a) const
// etc
你看到有三個常量這裏,現在我明白中間的一個,常量標&一個,其目的是不改變對象a,但其他兩個const呢?
我應該一直這樣做,保護blahblah不變是一個好習慣嗎?
非常感謝!
新手在這裏!const func(const scalar&a)const中的三個「const」,爲什麼?
我正在讀代碼,我看到作者經常寫一個成員函數作爲
const int func (const scalar& a) const
// etc
你看到有三個常量這裏,現在我明白中間的一個,常量標&一個,其目的是不改變對象a,但其他兩個const呢?
我應該一直這樣做,保護blahblah不變是一個好習慣嗎?
非常感謝!
您發佈的代碼無效,無法編譯。但是,如果考慮
class MyClass {
const int& func (const scalar& a) const {
// ...
}
};
第一const
將指定的返回值是恆定的(即不可變的)。第二個const
(const scalar& a
)指定該函數不會修改參數a
的值的值。第三個const指定func
是一個常量成員函數,即它不修改MyClass
實例本身。
這裏的關鍵是每個'const'修改聲明的不同部分,並且每個都有一個目的。 –
這裏更有趣! 'constexpr const char * const&func(const char * const&a)const' –
'constexpr const char * const&func(const char * const&a)const',what? – Daniel
由於沒有人提到它尚未:也絕對
const int some_function();
和
int some_function();
標量返回類型const
之間沒有差別(如int
)被忽略;它只對類類型很重要。 related
返回類型在哪裏?這是在課堂上嗎? –
這是無效的C++ – Philipp