环境:xp+vs2010
问题:在初始化类参数的过程中,可能需要多个重载的构造函数,但是有很多变量初始化代码又是一样的。肯定需要写一次,等待其他构造函数来调用即可。经过调试发现,在classA(int i)中调用classA(),可以发现程序在classA()运行时赋值、初始化等都成功了。一旦classA()运行结束返回classA(int i),初始化的值又突然变为一个随机数了,因此猜想在调用时出错了。
解决:
1.经过查阅资料发现,在构造函数中直接调用另一个构造函数,并没有分配新的内存,数据没有保留下来。
2.因此正确的调用方法是:
classA::classA(int i)
{
new (this) classA();
}
PS:貌似Java中不存在这个问题,可以直接调用