实际上,当我们定义一个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 ,
就必需要自己定义它们。