(3)用const修飾函式的引數和函式的返回值
在定義函式時常用到const,主要是用來修飾引數和返回值。這樣做的目的是讓編譯器為程式設計師做變數唯讀性的檢查,以使程式更加健壯。下面是乙個例子。
1. #include
2. 3. void disp1(const int &ri)
4. 7.
void disp2(const int i)
8. 11.
const int disp3(const int &ri)
12.
16.
int& disp4(int &ri)
17.
21.
const int& disp5(const int &ri)
22.
26.
27.
int main()
28.
複製**
程式的輸出結果為: 5
5 55 6
①用const修飾函式的引數時,主要將被引用物件或被指向的物件宣告為常量
,如果是將傳值呼叫的形參宣告為常量,則沒有多大實用價值
。在上例中,void disp2(const int i)這樣的宣告就沒有多少意義,因為形參i是否在函式體內改變,並不影響實參的值,所以將i宣告為常量雖然在語法上沒有錯,但沒有實用價值。不但如此,如果同時定義乙個相似的(沒有用const修飾引數)的函式,還會引起重定義錯誤,如下面的程式。
1. #include
2. 3. void f(int i)
4. 7.
void f(const int i)
8. 11.
12.
int main()
13.
複製**
在這個程式當中,定義了兩個名為f的函式,乙個函式原型為void f(int),另乙個函式原型為void f(const int),由於都是採用傳值呼叫,而任意的整型表示式的值都可以傳送給int型參變數,也可以傳送給const int型參變數,所以這兩個函式之間並不構成過載,而是發生重定義錯誤。 ②
當函式的返回值是乙個普通資料,而不是引用時,用const修飾函式返回值也沒有多少意義
。因為這時函式的返回值是乙個非左值,本來就不能夠改變其值。在例4中,const int disp3(const int &ri)對返回值的const限定是多餘的。 ③
如果函式的返回值為引用,那麼用const修飾返回值可以阻止對被引用物件的修改。
例如disp5(n)=6;是錯誤的,原因是函式disp5()的返回值被宣告為常引用。
const修飾函式引數時的過載
const修飾成員函式時的過載 根本原則是表示的引數是變數還是常量。void fun const int i void fun int i int main 結果 編譯錯誤,提示重定義 其實很好理解 void fun int a 和 void fun const int a 實際上沒有區別,因為函式...
const 修飾函式的引數和作為返回值
看到const關鍵字,程式設計師首先想到的可能是const 常量。const 更大的魅力是它可以修飾函式的引數 返回值,甚至函式的定義體。const 是constant 的縮寫,恆定不變 的意思。被const 修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。所以很多c 程式設計書籍...
const修飾物件和成員函式
用作自己對於const部分用法的記錄 詳情基本都寫在 注釋裡 const修飾成員函式 class myclass void fun const void funct const void func private int n void myclass fun const void myclass f...