C 函式返回引用

2021-09-25 07:20:51 字數 916 閱讀 1197

一、返回"值"和返回"引用是不同的"

函式返回時會產生乙個臨時變數作為函式返回值的副本,而返回引用時不會產生值的副本。

mystring operator+(const char *s1, const char *s2)

在上述中當函式執行完畢,程式將釋放分配給區域性物件的儲存空間。此時,對區域性物件的引用就會指向不確定的記憶體,所以在做函式返回值時不能返回區域性變數。

同理,指標也是這樣,返回指標的時候,不能指向區域性臨時變數,否則指標將變為野指標;

mystring& operator+=(mystring &str,const mystring &str2)

str.m_len = len;

str.m_data = tmp;

return str;

}

以上函式的返回值是引用型別。函式引數是通過引用傳參,且返回值是引數本身,所以str的型別為mystring& 型別(不加const是因為在函式內需要改變str的值)。函式體內區域性物件是不能當作引用返回的,因為函式呼叫完區域性物件會被釋放。

在類的成員函式中,返回引用的類物件,當然不能是函式內定義的類物件(會釋放掉),一般為 this 指向的物件,典型的例子是 string類的賦值函式。

mystring& mystring::operator=(cosnt mystring &str)

this->m_len = str.m_len;

this->m_data = new char[this->m_len + 1];

strcpy(this->m_data, str.m_data);

return *this;

}

c 函式返回引用

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

C 函式返回引用

首先需要明白 c 函式為什麼要返回引用?答 這樣就不用返回結果的副本。因為返回副本需要做賦值拷貝函式,浪費時間。這時候,實際上,返回是結果的副本,而不是結果本身。如果要返回本身,就返回引用就ok了。例1 const string manip2 const string s 此時,返回的不是ret本身...

c 函式返回引用

一,c 函式的返回分為以下幾種情況 1 主函式main的返回值 這裡提及一點,返回0表示程式執行成功。2 返回非引用型別 函式的返回值用於初始化在跳用函式出建立的臨時物件。用函式返回值初始化臨時物件與用實參初始化形參的方法是一樣 的。如果返回型別不是引用,在呼叫函式的地方會將函式返回值複製給臨時物件...