说我有:
class A
{
A()
{}
~A()
{}
};
class B
{
public:
B()
{}
~B()
{}
private:
static A mA;
};
B* pB = new B;
delete pB;
Run Code Online (Sandbox Code Playgroud)
当我调用delete pB时,将调用B的析构函数.那么这会为析构函数调用静态成员A吗?
C++标准版03,9.4.2静态数据成员:
静态数据成员不是类的子对象的一部分.class.class的所有对象共享的静态数据成员只有一个副本.
静态数据成员不是类的一部分 - 因此它不依赖于类的生命周期,也不依赖于构造或破坏.
建筑(9.4.2/3)
一旦定义了静态数据成员,即使没有创建其类的对象,它也会存在.它的类已经被创建.
毁灭(9.4.2/7)
静态数据成员的初始化和销毁与非本地对象完全相同.