C++11还支持委托构造函数。 委托构造函数允许构造函数调用同一个类的其他构造函数,该构造函数必须放在构造函数初始化器中。 例如:
#include
using namespace std;
class A
{
private:
int i=5;
string str=”初始值”;
public:
A(){
str=”委托构造函数”;
i=99;
}
A(int ii):A(){
//不能写成AA(int ii):A(),i(ii)
//委托构造函数不能再利用初始化器初始化其他数据成员
i=ii;
}
void show(){
cout<<”i=”<<i<<”,str=”<<str<<endl;
}
};
int main()
{
A a(10);
a.show();
}
运行结果: 但是要注意不要递归委托:例如
#include
using namespace std;
class A
{
private:
int i=5;
string str=”初始值”;
public:
A(string ss):A(555){
str=ss;
}
A(int ii):A(“OK”){
//不能写成AA(int ii):A(),i(ii)
//委托构造函数不能再利用初始化器初始化其他数据成员
i=ii;
}
void show(){
cout<<”i=”<<i<<”,str=”<<str<<endl;
}
};
int main()
{
A a(10);
a.show();
}
编译结果: 可以看出,编译并不会报错,但是运行的时候就出错了!
—————————————————————————————————————————————————— //写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。 转载请注明出处:https://www.royalchen.com/ author:royalchen Email:royalchen@royalchen.com ———————————————————————————————————————————————————
- 本文作者: royalchen
- 本文链接: http://www.royalchen.com/2016/02/24/c学习笔记19,c11的委托构造函数三/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!