實際上,當我們定義一個class而沒有明確定義構造函數的時候,
編譯器會自動假設兩個重載的構造函數
(默認構造函數"default constructor" 和復制構造函數"copy constructor")。
例如,對以下class:
class CExample {
public:
int a,b,c;
void multiply (int n, int m) { a=n; b=m; c=a*b; };
};
沒有定義構造函數,
編譯器自動假設它有以下constructor 成員函數:
必須注意:這兩個默認構造函數(empty construction 和 copy constructor )
只有在沒有其它構造函數被明確定義的情況下才存在。
如果任何其它有任意參數的構造函數被定義了,這兩個構造函數就都不存在了。
在這種情況下,
如果你想要有empty construction 和 copy constructor ,
就必需要自己定義它們。