C++类中构造函数调用构造函数问题

环境:xp+vs2010
问题:在初始化类参数的过程中,可能需要多个重载的构造函数,但是有很多变量初始化代码又是一样的。肯定需要写一次,等待其他构造函数来调用即可。经过调试发现,在classA(int i)中调用classA(),可以发现程序在classA()运行时赋值、初始化等都成功了。一旦classA()运行结束返回classA(int i),初始化的值又突然变为一个随机数了,因此猜想在调用时出错了。

解决:

1.经过查阅资料发现,在构造函数中直接调用另一个构造函数,并没有分配新的内存,数据没有保留下来。

2.因此正确的调用方法是:

classA::classA(int i)
{
    new (this) classA();
}

 PS:貌似Java中不存在这个问题,可以直接调用

posted @ 2013-07-24 16:34  风风清清扬扬  阅读(571)  评论(0编辑  收藏  举报