引用作為C C 類中成員變數

2021-08-02 15:30:36 字數 1241 閱讀 4197

引用作為c/c++ - 類中成員變數

**:引用作為成員變數:

不能有預設建構函式必須提供建構函式

建構函式的形參必須為引用型別

初始化必須在成員初始化鍊錶內完成

成員引用示例

c++引用

引用在定義時必須初始化,否則編譯時便會報錯。如果類(自定義型別)的成員是引用型別,需要注意一些問題。

不能有預設建構函式,必須提供建構函式

凡是有引用型別的成員變數的類,不能有預設建構函式。預設建構函式沒有對引用成員提供預設的初始化機制,也因此造成引用未初始化的編譯錯誤。

建構函式的形參必須為引用型別

暫時還不知道該怎麼解釋,牽涉到引用的機制。

初始化必須在成員初始化列表內完成

不能直接在建構函式裡初始化,必須用到初始化列表,且形參也必須是引用型別。建構函式分為初始化和計算兩個階段,前者對應成員初始化鍊錶,後者對應建構函式函式體。引用必須在初始化階段,也即在成員初始化鍊錶中完成,否則編譯時會報錯(引用未初始化)。

成員引用示例

#include

using namespace std;

class ref

// 函式體對引用賦值,編譯錯誤:引用未初始化

// ref (int &target)  

// 如果成員為變數為引用型別,那麼建構函式的引數為應用型別

// 引用必須在成員初始化鍊錶裡面初始化,不能在函式體裡面初始化

// 在函式體裡面修改myref,相當於賦值,顯然引用不能賦值

ref (int &target) :myref(target)

void printref()

virtual ~ref () {}

private:

int &myref;

/* data */

};int main(int argc, char *argv)

{int a = 20;

ref r(a);

r.printref();

int &b = a;

ref r1(b);

r1.printref();

int c=20;

ref r2(c);//輸出不正常

return 0;

程式輸出如下:

ref constructor

myref is: 20

ref constructor

myref is: 20

ref constructor

C C 引用作為函式的返回值

語法 型別 函式名 形參列表 特別注意 1.引用作為函式的返回值時,必須在定義函式時在函式名前將 2.用引用作函式的返回值的最大的好處是在記憶體中不產生返回值的副本 includeusing namespace std float temp float fn1 float r float fn2 f...

C C 引用作為函式的返回值

語法 型別 函式名 形參列表 特別注意 1.引用作為函式的返回值時,必須在定義函式時在函式名前將 2.用引用作函式的返回值的最大的好處是在記憶體中不產生返回值的副本 返回全域性變數temp的值時,c 會在記憶體中建立臨時變數並將temp的值拷貝給該臨時變數。當返回到主函式main後,賦值語句a fn...

C C 引用作為函式的返回值

1 什麼是引用?引用就是變數的別名,操作乙個變數的引用也就相當於操作變數本身,這一點跟指標很類似,但是操作引用不用像操作指標一樣,利用取位址符號,很不方便。而操作引用的話,則跟操作普通變數一樣,所以c 之中更加鼓勵使用引用。2 c 函式為什麼要使用引用?c語言之中大量利用指標作為形參或者函式返回值,...