Cla*_*diu 2 c++ destructor class member instance
如果我有类似的东西
class Foo { ... }
class UsesFoo {
private:
Foo foo;
public:
UsesFoo() : foo(1, 2, 3) { }
}
Run Code Online (Sandbox Code Playgroud)
然后据我所知,当我构造一个UsesFoo
(be it UsesFoo *myMan = new UsesFoo();
或UsesFoo myMan;
)时,它Foo
就像通过调用一样创建一个对象Foo(1, 2, 3)
.当UsesFoo
被摧毁时(无论是通过delete myMan;
还是超出范围),Foo
内部也将被破坏.
如果我提供以下析构函数,Foo
仍然会被破坏吗?
~UsesFoo() { }
Run Code Online (Sandbox Code Playgroud)
如果没有,那么我该怎么办才能破坏Foo
?换句话说,作为类实例的非指针成员变量如何被破坏的语义是什么?
如果我提供以下析构函数,
Foo
仍然会被破坏吗?
是的.标准,
在执行析构函数的主体并销毁在主体内分配的任何自动对象之后,类
X
的析构函数调用析构函数X
的直接非变量非静态数据成员,X
直接基类的析构函数,如果X
是最派生类的类型(12.6.2),它的析构函数调用析构函数X
的虚拟基类.
(C++ 11,§12.4/ 8)
归档时间: |
|
查看次数: |
95 次 |
最近记录: |