2
如果我有像我是否必须在析构函数中做任何事情来释放非指针成员变量?
class Foo { ... }
class UsesFoo {
private:
Foo foo;
public:
UsesFoo() : foo(1, 2, 3) { }
}
然后按我的理解,当你建造一个UsesFoo
(无论是UsesFoo *myMan = new UsesFoo();
或UsesFoo myMan;
),它通过调用Foo(1, 2, 3)
创建Foo
对象仿佛。当UsesFoo
遭到破坏(通过delete myMan;
或超出范围),Foo
里面也将被销毁。
如果我提供了下面的析构函数,Foo
还会被破坏吗?
~UsesFoo() { }
如果不是,那我该怎么做才能销毁Foo
?换句话说,作为类实例的非指针成员变量是如何被破坏的语义是什么?
尼斯,从标准报价=)。这在C++ 11之前有多远? – Claudiu
@Claudiu时间本身的开始。 – David
@Claudiu,它在C++ 03中是§12.4/ 6。但我倾向于同意戴夫的评论。 – Brian