C 以const 作為返回值型別的意義

2022-03-11 16:01:29 字數 505 閱讀 9318

const rational operator*(const rational& lhs, const rational& rhs);

很多程式設計師第一眼看到它會納悶:為什麼operator*的返回結果是乙個const物件?因為如果不是這樣,使用者就可以做下面這樣的壞事:

rational a, b, c;

...(a * b) = c;// 對a*b的結果賦值

我不知道為什麼有些程式設計師會想到對兩個數的運算結果直接賦值,但我卻知道:如果a,b和c是固定型別,這樣做顯然是不合法的。

乙個好的使用者自定義型別的特徵是,它會避免那種沒道理的與固定型別不相容的行為。對我來說,對兩個數的運算結果賦值是非常沒道理的。

宣告operator*的返回值為const可以防止這種情況,所以這樣做才是正確的。

基本上一般的operator=運算子函式都會以const & 作為返回值,這樣是為了維護以上的理由。(達到同普通運算子的單向值的傳遞效果)

c 以const 作為返回值的意義何在

const rational operator const rational lhs,const rational rhs 很多程式設計師第一眼看到它會納悶 為什麼operator 的返回結果是乙個const物件?因為如果不是這樣,使用者就可以做下面這樣的壞事 rational a,b,c a b ...

const 修飾函式的引數和作為返回值

看到const關鍵字,程式設計師首先想到的可能是const 常量。const 更大的魅力是它可以修飾函式的引數 返回值,甚至函式的定義體。const 是constant 的縮寫,恆定不變 的意思。被const 修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。所以很多c 程式設計書籍...

函式作為返回值

就像常見的函式一樣,lambda 表示式可以返回乙個函式指標 委託例項 這就意味著我們能夠使用乙個 lambda 表示式來建立並返回另乙個 lambda 表示式。這種行為在很多場景下都是非常有用的。我們先來看下面這個例子 1 func saymyname string language 2 10ca...