/*
1)當類中沒有定義任何乙個建構函式時,c++編譯器會提供預設無參建構函式和預設拷貝建構函式
2)當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式
3) 當類中定義了任意的非拷貝建構函式(即:當類中提供了有參建構函式或無參建構函式),
c++編譯器不會提供預設無參建構函式
4 )預設拷貝建構函式成員變數簡單賦值
總結:只要你寫了建構函式,那麼你必須用。
*/
第一種情況
#if 1
class test
protected:
private:
int a;
int b;
};void test()
#endif
第2種情況
#if 1
class test
void printt()
protected:
private:
int a;
int b;
};void test()
#endif
第3種情況
#if 1
class test
void printt()
protected:
private:
int a;
int b;
};void test()
#endif
第4種情況
當類中定義了拷貝建構函式時,c++編譯器不會提供無引數建構函式
定義拷貝建構函式必須同時定義建構函式
今天測試static cast 時發現乙個類如果只有拷貝建構函式是不能通過編譯的,下面給個例子 class a public a const a ref cout error c2512 a 沒有合適的預設建構函式可用 解決方法 給a新增合適的建構函式。下面給出新增了建構函式的 並測試了static...
什麼時候必須重寫拷貝建構函式
1 這裡有個簡單的規則 如果你需要定義乙個非空的析構函式,那麼,通常情況下你也需要定義乙個拷貝建構函式。2 有乙個原則 一般來說你在類中進行了new操作,你就需要析構函式,在你需要析構函式的類中,一般需要加上挎貝建構函式和賦值函式。3 拷貝建構函式,是一種特殊的建構函式,它由編譯器呼叫來完成一些基於...
拷貝建構函式的引數型別必須是引用
在c 中,建構函式,拷貝建構函式,析構函式和賦值函式 賦值運算子過載 是最基本不過的需要掌握的知識。但是如果我問你 拷貝建構函式的引數為什麼必須使用引用型別?這個問題,你會怎麼回答?或許你會回答為了減少一次記憶體拷貝?很慚愧的是,我的第一感覺也是這麼回答。不過還好,我思索一下以後,發現這個答案是不對...