問題1:下面①處的**注釋掉後,就編譯不過,為什麼???
問題2:但是把②處的也注釋掉後,編譯就過了,為什麼???
編譯錯誤:
001.cpp: in copy constructor 『test::test(const test&)』:
001.cpp:21:22: error: no matching function for call to 『int::int()』
test(const test& t)---->①
int(int i):mi(i)
int(const int& tmp)
~int(){}
};class test
test(const test& t)//---->②
~test(){}
int getvalue()
//過載方法
int getvalue() const
};int main()
修改辦法:
1,在③處給初始值。例如:int data = 10;
2,在④處,修改為:int(int i = 0):mi(i){
3,把類int的所有建構函式和拷貝建構函式注釋掉,這樣一來,編譯器就和自動合成這些建構函式。
拷貝控制之拷貝建構函式
當我們定義乙個類的時候。我們通常會顯式或隱式的指定在此類的物件在建立 移動 銷毀的時候要做些什麼。乙個類通常通過定義五種特殊的成員函式來控制這些操作 拷貝建構函式 拷貝賦值運算子 移動建構函式 移動賦值運算子 析構函式。如果我們沒有定義這些成員函式,編譯器會自動定義些缺失的操作。有時也會造成些意想不...
深淺拷貝問題 拷貝建構函式
深拷貝 在堆區重新申請空間,進行拷貝操作 淺拷貝 簡單的複製拷貝操作 class person person int age person int m age void test 當引數中有堆區引數,改造之後 class person person int age,int height person...
拷貝建構函式關於指標的拷貝問題
1.拷貝建構函式的定義 如果乙個建構函式的第乙個引數是自身型別的引用,且任何額外引數都有預設值。拷貝建構函式的第乙個引數必須是乙個引用型別。合成拷貝建構函式 如果我們沒有為乙個類定義拷貝建構函式,編譯器會為我們定義乙個。編譯器從給定物件中,依次將每個非static成員拷貝到正在建立的物件中。2.拷貝...