// Point3D类别
class Point3D : public Point2D { // 继承Point2D类别
public:
Point3D() {
_z = 0;
}
// 建构函式,同时指定呼叫父类别建构函式
Point3D(int x, int y, int z) : Point2D(x, y), _z(z) {
}
private:
int _z; // 新增私用资料
};
如果您使用衍生类别生成物件,则建构函式的执行顺序会从基底类别的建构函式开始执行起,这是可以理解的,因为基底类别是衍生类别的基础,一些基础的参数或初始状态必须先完成,再来再完成衍生类别中的建构函式。
而在物件被消灭时,解构函式的执行顺序则正好相反,是从衍生类别的解构函式开始执行,再来才是基础类别的建构函式,因为若基底类别的解构函式如果先执行,则衍生类别相依於基底类别的一些状态也会被解构(例如指标),则此时再行衍生类别的解构函式,将存在着相依问题而造成错误。










