引用就是物件的另乙個名字。在實際程式中,引用主要用作函式的形參。引用是一種復合型別,通過在變數名前新增&符號來定義。
引用必須用與該引用同型別的物件初始化。
int var = 12;
int &num = var;//沒問題,將int型的引用指向int型的物件
char &ch = var; //錯誤,char型別的物件不能指向int型的物件
char &chnew; //錯誤,引用一經定義必須初始化
當引用初始化之後,只要改引用存在,它就保持繫結到初始化時指向的物件,不可能將引用繫結到另乙個物件.
int var = 12; //定義乙個int型的物件
int &num = var; //將num指向var,此時num只是var的別名
num = 14; //修改num的值,此時也就是直接修改var的值,此時var = 14
int data = 23;
num = data;//你進行此舉或許是想將num指向data,但是不能達到你想要的效果。該語句就是講data的拷貝賦值給num,也就是將data的拷貝賦值給var,此時var = 23.
4、引用在實際中的作用就是和函式結合起來,首先看一下引用做函式引數。
void swap(int &,int &);
這是每個教材上都會講到的,確實,引用在函式中差不多就是這樣用的。
#include using namespace std;
void swapref(int &lhr,int& rhr)
void swapcopy(int lho,int rho)
int main()
//析構函式
~teacher();
//拷貝建構函式
teacher(const teacher &m_teacher);
//賦值操作符
teacher& operator = (const teacher &m_teacher);
//輸出操作符過載
friend ostream & operator<
void setname(const char* pch)
void setincom(const double &db_income)
void setaddress(const string &str)
};teacher::teacher(const teacher &m_teacher)
}teacher& teacher::operator=(const teacher &m_teacher)
}return *this;
}ostream& operator<
}int main()
void setaddress(const string &str)
函式返回引用:
teacher& operator = (const teacher &m_teacher);
我們使用引用,主要是避免了物件的賦值,這節省了不少的程式執行速度和記憶體開銷,所以我們在程式中盡量使用返回引用,而不是返回乙份物件的拷貝。
在函式返回引用時,千萬不要返回臨時物件的引用。因為在函式返回時,臨時物件銷毀,返回引用會使得物件指向乙個不存在的物件,造成程式的崩潰。
如下所示:
int &getdata(const int &num)
temp 時函式內部的臨時物件,函式在返回時temp已經銷毀,若使用:int data = getdata(5);則程式會報錯,因為data引用乙個不存在的物件。我們在書寫程式的時候一定要 避免。
#include using namespace std;
void setarray(int (&array)[10])
}void printarray(const int (&array)[10])
{ for(int i=0;i<10;i++)
cout<
程式執行的結果:
這裡把陣列的引用拿出來是想告訴陣列的引用是如何實現的,實際上並沒有多難。
C C 高階語法 函式指標及其應用
int getdata int num 形如上面的形式的為指標函式,指標函式實際上就是函式,只是返回型別為指標。在 結構體的深度拷貝中 createat 函式便是乙個指標函式,用來得到結構體物件。這種用法很普遍 基本上是這麼用的 我們在打下基礎的時候要把這一點給掌握好了。之前說過陣列是一種型別,其形...
C C 引用介紹
引用簡介引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,它是變數a的引用,即別名 說明 1 在此不是求位址運算,而是起標識作用。2 型別識別符號是指目標變數的型別。3 宣告引...
C C 程式設計 引用
問 什麼是引用 引用就是給物件起別名 int ival 1024 int refval ival refval就是ival的別名 int refval2 錯誤 引用必須被初始化 int refval3 refval ok refval3實際上繫結在了ival上 int jval refval ok ...