最新消息:点击查看大S的省钱秘笈

C++可以在构造函数中调用本类的另一个构造函数么?

编程相关 Slyar 7199浏览 3评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

Nope.

看下面一段代码,我们希望能使用构造函数Foo::Foo(char x)去调用本类的另一个构造函数Foo::Foo(char x, int y),这样可以偷懒(=_=),但是很可惜,在C++中我们不可以这么做...继续往下看

在执行构造函数时,Foo(x, 0)并不会调用"this"对象的Foo::Foo(char x, int y),而是会用Foo::Foo(char x, int y)来创建一个新的临时实例对象,然后当这条语句执行完后,这个新的临时对象马上就会被销毁。这样一来,"this"对象就没有被初始化,以后使用"this"对象就有可能产生一些问题...时刻记得构造函数是用来初始化对象的,如果想偷懒,可以在构造函数里调用一个自己写的私有init()初始化函数...

转载请注明:Slyar Home » C++可以在构造函数中调用本类的另一个构造函数么?

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 用“new (this)Foo(x, 0);”来替代
    在天朝10年前(2013-04-05)回复
  2. 非常感谢博主让我看见了这个问题。 不过还是忍不住说下,虽然是样本代码,但是也不能太差了: 类名字后面多了括号,类结束的大括号后漏了分号。
    阿木12年前(2011-05-05)回复
  3. 的确如此,你这个结论我已经得到了,亲自验证了一下,的确是一个发现啊。终于明白构造函数的作用了。多谢啊。
    刚子13年前(2010-09-04)回复