C++11还支持委托构造函数。
委托构造函数允许构造函数调用同一个类的其他构造函数,该构造函数必须放在构造函数初始化器中。
例如:
#include <iostream> 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 <iostream> 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
———————————————————————————————————————————————————