C++程序设计教程 第8讲:继承与派生(I
C++程序设计教程 第8讲:继承与派生 (II)
§7.4派生类的构造和析构函数 派生类的构造函数 基类的构造函数不被继承,派生类中需要声明 自己的构造函数。 声明构造函数时,只需要对本类中新增成员进 行初始化,对继承来的基类成员的初始化,自 动调用基类构造函数完成 (隐式调用) 派生类的构造函数需要给基类的构造函数传递 参数时,可以在构造函数中调用基类构造函数 (显式调用)
§7.4 派生类的构造和析构函数 派生类的构造函数 基类的构造函数不被继承,派生类中需要声明 自己的构造函数。 声明构造函数时,只需要对本类中新增成员进 行初始化,对继承来的基类成员的初始化,自 动调用基类构造函数完成。 (隐式调用) 派生类的构造函数需要给基类的构造函数传递 参数时,可以在构造函数中调用基类构造函数。 (显式调用)
§7.4派生类的构造和析构函数 显式调用 class poin七 I public Point (float =0.of, float =0.0f)i }; 派生类的声明 class Circle public Point Circle (float r=0.of, float x=0.Of, float y=0. of)i Circle:: Circle (float r, float a, float b) Point (a b) 派生类的实现
§7.4 派生类的构造和析构函数 显式调用: class Point { public: Point (float = 0.0f, float = 0.0f); … … }; class Circle : public Point { Circle (float r=0.0f, float x=0.0f, float y=0.0f); … … }; Circle::Circle (float r, float a, float b) : Point (a, b) { … … } 派生类的声明 派生类的实现
拷贝构造函数 若建立派生类对象时调用默认拷贝构造函数, 则编译器将自动调用基类的默认拷贝构造函数。 若编写派生类的拷贝构造函数,则需要为基类 相应的拷贝构造函数传递参数。例如 class base pub1ic:Base(){….}}; 调用Base的构造 class Derived: public Base 函数 public: Derived (Derived& d): Base(d)
拷贝构造函数 若建立派生类对象时调用默认拷贝构造函数, 则编译器将自动调用基类的默认拷贝构造函数。 若编写派生类的拷贝构造函数,则需要为基类 相应的拷贝构造函数传递参数。例如: class Base { public: Base() {…} }; class Derived : public Base { public: Derived (Derived& d) : Base(d) {…} }; 调用Base的构造 函数
侏承时的析构函数 析构函数也不被继承,派生类自行声明 声明方法与一般(无继承关系时)类的析 构函数相同。 不需要显式地调用基类的析构函数,系统 会自动隐式调用。 析构函数的调用次序与构造函数相反 如果是显式调用,必须用到虚函数( virtua)
继承时的析构函数 析构函数也不被继承,派生类自行声明 声明方法与一般(无继承关系时)类的析 构函数相同。 不需要显式地调用基类的析构函数,系统 会自动隐式调用。 析构函数的调用次序与构造函数相反。 如果是显式调用,必须用到虚函数(virtual)