C 函式返回值宣告為const的原因

2021-06-06 14:36:13 字數 421 閱讀 8529

其目的就是為了實現使用者自定義型別與內建型別最大限度的保持一致性。

比如操作 a+b = c; 對於內建型別在編譯時,會彈出不能對lvalue進行賦值的錯誤;然而對於使用者自定義型別,比如class a{}; 當對a定義了形式為

a operator+(const a& lhs, const a& rhs){};的介面時,編譯和連線過程不會出現內建型別彈出的錯誤。

解決辦法就是給函式的返回值加上const標識,指定不能對函式的返回值進行賦值,如此一來,對於自定義型別,再進行a+b = c;操作時,編譯過程也會報錯。

在現實的編碼中,可能誰也不會敲出a+b=c;這樣的單純語句,但是你不可能保證在你想表達if(a+b == c)時,卻一時馬虎寫成了if(a+b = c),程式能夠編譯連線通過,但不是按你想要的邏輯執行,於是問題就出現了,這個問題應該再編譯時期就被發現的。

C 函式返回值為const

c 函式返回值為const 令函式返回值為const,往往可以降低因使用者錯誤而造成的意外,而又不至於放棄安全性和高效性。class rational class rational operator const rational lhs,const rational rhs rational a,b...

const 修飾函式返回值作用

const int getval void 該函式返回值 const 可有可無。const int getptr void int main 指標其指向內容不能被修改。函式返回為引用時,如果不想修改函式呼叫後的值,則用const const const 函式返回值引用常量表示不能將函式呼叫表示式作為...

const引用返回值

一 引用 引用是別名 必須在定義引用時進行初始化。初始化是指明引用指向哪個物件的唯一方法。const 引用是指向 const 物件的引用 const int ival 1024 const int refval ival ok both reference and object are const ...