const引用形參的意義

2021-09-14 02:28:28 字數 768 閱讀 7752

如const int &ival 

首先如果它只是const非引用形參那麼實參是否為const對它沒有影響,因為只是傳遞副本。而當它為非const引用形參,那麼它是實參的別名,對它的修改也就是對實參本身的修改,,而當它為const 引用形參 那麼將會修改實參的值 而他本身不會修改?那麼引用是實參的別名而後加了個const 也就是說別名不會被修改 就是說ival的不會被修改 請問下這是為什麼呢?為什麼要這樣 這樣的意義何在?

所謂的const的含義, 就是該變數為"常數", 不應該也不會去修改它.

void fun(const int ival)

void fun(const int& ival)

也就是說, 只要物件的宣告中帶有const標識, 任何有修改其值風險的行為編譯器都會提醒你..

const t& 和const t的意義幾乎是完全一樣的.

但是後者, lz也知道是要複製乙份的, 對於某些巨型類來說複製的速度非常慢, 而且也會有些型別在設計上拒絕複製(比如說cin和cout).

這種時候為了提公升效率, 就需要引用引數, 或者指標了.

如果有修改引數值的必要, 就用一般引用, 表示 "我這個函式有可能會修改你傳遞過來的引數"

如果僅僅讀取引數值, 那麼就用const引用, 表示 "我這個函式絕對不會修改你傳遞過來的引數"

但是, 對於int這樣的小型的內建型別來說, 這2這幾乎就真的沒有差別了, 對於引用通常需要位址來傳遞, int型別佔據的記憶體和位址一樣或者更小(64位機器指標是64位大小)

函式形參 指標,引用,const,陣列形參

指標也是物件,也會拷貝,所以分實參指標和形參指標。在傳進函式時,實參進行拷貝,所以在函式裡改變指標值不影響實參。void reset int ip 引用不是物件,通過引用可以改變實參 void reset int i 使用引用的好處是避免了拷貝。其實也只是兩個變數名的傳遞,和變數規則一致,如果在函式...

函式形參中的const引用

這裡將c primer中函式形參章節有關const和引用的問題簡單小結如下 一 非const非引用形參 這個是乙個平庸的情形。函式引數通過複製對應的實參實現初始化,函式本身對形參的修改不會影響到實參。傳遞給這類函式的實參可以是乙個const型的物件,也可以是非const的物件。乙個需要注意的事情是,...

非引用形參VS指標形參VS引用形參

一 非引用形參 voidadd1 intv1 這是最普通的形參方式,當函式被呼叫時,呼叫拷貝建構函式,生產乙個新的例項,函式所有的修改,都是對新的例項的修改 函式退出之前,會呼叫析構函式,資源。二 指標形參 voidadd2 int p 使用指標做為函式的形參,同樣指標的值 指標的位址 不會因為 p...