0前言
1內建型別
2自定義型別3結論
4原始碼c++預設賦值建構函式的返回值是引用型別,c++賦值運算子=的本意是返回左值的引用,我們過載賦值建構函式的時候,返回值是否應該設為引用型別呢?按照《effective c++》中第10條,最好是設為引用型別。
本文,通過實驗來表述返回值是否為引用型別的區別。
int i= 1, j=2, k=3;
i == 1
j == 1
k == 1
i == 1
j == 2
k == 1
people p1("p1"), p2("p2"), p3("p3");
p3 == p1
p2 == p1
p3 == p1
p2 == p1
p3 == p1
p2 == p1
p3 == p1
p2 == p2
p3 == p1
p2 == p2
p3 == p2
p2 == p2
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
std::cout;
using
std::endl;
using std::string
;using
std::vector;
using
std::stringstream;
void
test_int()
void
test_int2()
class
people
people
operator=(const people &_p)
string
name;
};void
test()
void
test2()
class
peopleref
peopleref& operator=(const peopleref &_p)
string
name;
};void
test_ref()
void
test_ref2()
class
peopledefault
string
name;
};void
test_default()
void
test_default2()
intmain ()
此文章為 '永無止境'(入駐一點號的**名稱)原創,特此宣告!
c 賦值運算子為什麼要返回引用
一 c c 賦值運算子的本意為 返回左值的引用 左值 賦值號左面的變數而非其值 例 int a,b 3,c 2 a b c cout 對於a b a,b均為物件時 若不返回左值的引用,將會生成臨時物件。如果不處理a b c這樣的表示式,也會正常 只是會呼叫拷貝建構函式和析構函式處理臨時物件 二 為了...
拷貝建構函式為什麼要用引用?
一 引用 1.概念 引用不是新定義乙個變數,而是給已經存在的變數取了個別名,編譯器不會為引用開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間。2.和指標區別 引用在定義時必須初始化,指標沒有要求 引用在初始化時引用乙個實體後,就不能再引用其他實體,而指標可以在任何時候指向任何乙個同型別實體 沒有...
為什麼建構函式沒有返回值?
意見 1 我認為建構函式隱含的返回值就是this,因為建構函式是在類的物件產生時自動呼叫。建構函式被呼叫也就意味著產生了乙個物件,而this指標是與物件實體相關聯的,所以我認為它返回的就是this。舉例如下 class a a aa 此語句導致類a的建構函式a 被自動呼叫返回乙個首位址,系統就在記憶...