单参数构造函数是一种比较特殊的构造函数
例如:
calss CAtype
{
public:
CAtype(int a)//单一参数构造函数
{
nMember = a;
}
private:
int nMember;
}
void main()
{
A cAInstance = 2;//此处会调用单一参数构造函数,而不会调用赋值运算符,切记;这种调用方式属于隐式调用
}
注意:
这种调用方式,会使得程序不容易正确理解,因此程序员,为了防止这样的调用发生, 可以使用关键字explicit修改单一参数构造函数,防止其被不可预知的调用;,保证其只能通过显式调用的方式调用。
单一参数构造函数的调用时机:
(1)用于初始化对象;
A cAInstance1 = x;//此时调用;
(2) 作为函数参数被调用时;
void Fun(A cAPar) {...}
Fun(x)//此时d调用
(3)作为函数返回值仅限于值传递
A Get(){ T x; return x;}//此时调用
一个极为明显的例子是,拷贝构造函数,拷贝构造函数显然是一个 单一参数构造函数,它具备单一参数构造函数的一切特征;
拷贝构造函数何时会被调用:
(1)用于初始化对象;
A cAInstance1 = cAInstance2;//此时调用;
(2) 作为函数参数被调用时;
void Fun(A cAPar) {...}
Fun(cAinstance)//此时d调用
(3)作为函数返回值仅限于值传递
A Get(){ A cAinstance(10); return cAinstance;}//此时调用