文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
Nope.
看下面一段代码,我们希望能使用构造函数Foo::Foo(char x)去调用本类的另一个构造函数Foo::Foo(char x, int y),这样可以偷懒(=_=),但是很可惜,在C++中我们不可以这么做...继续往下看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Foo() { public: Foo(char x); Foo(char x, int y); ... } Foo::Foo(char x) { ... Foo(x, 0); // this line does NOT help initialize the this object!! ... } |
在执行构造函数时,Foo(x, 0)并不会调用"this"对象的Foo::Foo(char x, int y),而是会用Foo::Foo(char x, int y)来创建一个新的临时实例对象,然后当这条语句执行完后,这个新的临时对象马上就会被销毁。这样一来,"this"对象就没有被初始化,以后使用"this"对象就有可能产生一些问题...时刻记得构造函数是用来初始化对象的,如果想偷懒,可以在构造函数里调用一个自己写的私有init()初始化函数...
转载请注明:Slyar Home » C++可以在构造函数中调用本类的另一个构造函数么?