在C++中,假设有如下定义的类
class myClass {
public:
int i;
char ch;
double d;
myClass(int i = 0, char ch = ' ', double d = 0.0):i(i), ch(ch), d(d) {
}
};
其中,自定义类myClass的构造函数中,每个参数都有默认值,该构造函数相当于默认构造函数。
1 仅指定类中某个成员变量的值
当想要为某一成员变量赋初值时,可以使用如下方法
myClass mc = myClass(0, ' ', 1.0);
也就是说,即使mc的成员变量i和ch使用默认的初始值,也要显式地写出来。这样在编写代码时就显得有些麻烦,可以使用委托构造函数的方法解决该问题。
2 委托构造函数
2.1 简介
委托构造函数时C++11标准中新添加的功能。委托构造函数委托其他的构造函数来完成初始化。被委托的构造函数跟在委托构造函数参数列表的圆括号之后,用分号分隔。
2.2 使用
在myClass的定义中添加委托构造函数
myClass(double d) :myClass(0, ' ', d){
}
以上代码的含义是,myClass(double d) 委托myClass(0, ' ', d)完成初始化。
通过委托构造函数定义的对象
myClass mc = myClass(1.0);
此时,mc.d的值是1.0。