文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。
Nope.
看下面一段代码,我们希望能使用构造函数Foo::Foo(char x)去调用本类的另一个构造函数Foo::Foo(char x, int y),这样可以偷懒(=_=),但是很可惜,在C++中我们不可以这么做…继续往下看
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++可以在构造函数中调用本类的另一个构造函数么?