今天看symbian的文件,看到一个类似下面的trick:
class T
{
public:
T( int i)
{
....
}
void Set(int i)
{
//简单的调用T(int i)构造函数里面的语句即可
//但是不能这样写:
//T(i); //错误,编译器解释成 T i();
//而应该这样。利用new placement
new (this)T(i);
}
};
Set调用构造函数不太容易,如果在构造函数中调用Set那就简单多了。
通过该种方式,也使得C++和Java一样可以在一个构造函数中调用其他的构造函数。例如:
T(int i)
{
new(this)T(i, 10);
}
T(int j, int d)
{
}