C++默认析构函数没有任何特殊的功能 它就是一个空函数???
如果是初级的C++入门书籍会告诉你,默认的构造和析构函数都是空函数,他不做任何操作。
但实际情况是,严格上来说这句话是错误的。应该分情况讨论如下:
一个类是Plain Old Data类型的,即该类的构造函数和析构函数都是平凡的(trivial的),若该类的默认构造/析构函数存在,则他们是空函数。
如果一个类不满足POD条件,即该类是非平凡的(non-trivial的),则默认析构函数不是空函数,它将是类中非平凡的类成员变量的析构函数的合成函数。(构造函数情况稍微复杂,此处不讨论)
Plain Old Data
POD指的是这样一些数据类型:基本数据类型、指针、union、数组、构造函数是 trivial 的 struct 或者 class。
POD-struct
c++中的普通旧数据结构是一个聚合类,它只包含Plain Old Data 作为成员,没有用户定义的析构函数,没有用户定义的复制赋值操作符,也没有指针到成员类型的非静态成员。