首页 > 学院 > 开发设计 > 正文

派生类的说明和构造函数

2019-11-08 01:09:46
字体:
来源:转载
供稿:网友

写在前面

上一篇文章派生与继承介绍了派生与继承的一些基本知识,在这里我们将学习派生类的说明和构造函数。

派生类的说明

格式

class <类名>:<基类说明表>{PRivate: <私有成员表>protected: <保护成员表>public: <公有成员表>}

其中<基类说明表>可以列出一个或多个基类,每个基类说明格式为:<派生方式><基类名>

例子

class D: public A, private B, protected C{ ...}

派生类的构造函数

格式

<派生类名>(<参数总表>):<初始化符表>{ <构造函数体>}

<参数总表>列出对象初始化需要的所有参数

<初始化符表>按如下格式构成:

<基类名1>(<基类参数表1>),...,<基类名n>(<基类参数表n>),<对象成员名1>(<对象成员参数表1>),...,<对象成员名n>(<对象成员参数表n>)

例子

class D: public A, private B, protected C{ ...public: D(int a, int b, int c, int d) :A(a), B(b), C(c){ ... }}

构造函数的调用按class D: public A, private B, protected C中基类的顺序从左到右依次执行,然后再是初始化符表中的对象成员(此例中没有),最后才是自身,因此总的顺序是A->B->C->D。

综合例子

#include<iostream>using namespace std;class A{ int a;public: A(int n){ a = n; cout << "A::a = " << a << endl; } ~A(){ cout << "A destructed!" << endl; }};class B{ int b;public: B(int n){ b = n; cout << "B::b = " << b << endl; } ~B(){ cout << "B destructed!" << endl; }};class C:public A{ int c;public: C(int na, int nc) :A(na){ c = nc; cout << "C::c = " << c << endl; } ~C(){ cout << "C destructed!" << endl; }};class D :public B, public C{ int d;public: D(int nb, int nc1, int nc2, int nd) :B(nb), C(nc1, nc2){ d = nd; cout << "D::d = " << d << endl; } ~D(){ cout << "D destructed!" << endl; }};int main(){ D obj(1, 2, 3, 4);}

输出

B::b = 1A::a = 2C::c = 3D::d = 4D destructed!C destructed!A destructed!B destructed!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表