如果类没有定义析构函数,那么只有类中含有成员对象(或者本类的基类)拥有析构函数的情况下,编译器才会合成一个出来,否则析构函数被视为不要,也就不需要合成。例如,如下类,虽然Point类拥有虚函数:
- class Point {
- piblic:
- Point(float x = 0.0, float y = 0.0);
- Point (const Point&);
- virtual float z();
- private:
- flaot _x, _y;
- };
- class Line {
- public:
- Line(const Point&, const Point&);