(3)用const修飾函式的引數和函式的返回值

2021-07-04 16:07:18 字數 1273 閱讀 3483

(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...