通常我会给我的C++对象添加一个Empty
方法,使用类似以下代码的方式清除内部状态。
class Foo
{
private:
int n_;
std::string str_;
public:
Foo() : n_(1234), str_("Hello, world!")
{
}
void Empty()
{
*this = Foo();
}
};
这似乎比在构造函数中复制代码更好,但我想知道当想要清除一个对象时*this = Foo()
是否是一种常见的方法?这样做会不会有什么问题在未来出现?还有其他更好的方法可以实现这种操作吗?
Foo
继承自没有默认构造函数并且需要使用初始化列表进行初始化的Bar
,你会怎么做? - paracycleFoo() : Bar(DUMMY) { Reset(); }
如果Bar需要被重置,我会认为它也会有一个Reset函数:void Reset() { Bar::Reset(); ... }
因此,为了清晰起见,Bar成员可能会有一些冗余的初始化。 - Ates Goral