C++继承实践:基础类与派生类示例

需积分: 11 0 下载量 184 浏览量 更新于2024-09-11 收藏 7KB TXT 举报
"类的继承练习" 在C++编程中,继承是面向对象编程的一个核心概念,它允许创建一个新的类(子类)从一个现有的类(父类或基类)继承属性和行为。这个练习主要关注如何使用C++实现基本的类继承。 首先,我们来看第一个示例: ```cpp #include<iostream.h> class base { public: base(){cout<<"constructing base class"<<endl;} ~base(){cout<<"destructing base class"<<endl;} }; class subs: public base { public: subs(){cout<<"constructing subclass"<<endl;} ~subs(){cout<<"destructing subclass"<<endl;} }; void main() { subs s; } ``` 在这个例子中,`base` 是基类,而 `subs` 是通过关键字 `public` 继承自 `base` 的子类。`public` 继承意味着子类将继承基类的所有公有和保护成员。当创建 `subs` 类的对象 `s` 时,会首先调用基类的构造函数 `base()`,然后是子类的构造函数 `subs()`。在程序结束时,会按照相反的顺序调用析构函数,先调用子类的 `~subs()`,再调用基类的 `~base()`。输出结果反映了这一过程。 接下来是第二个示例: ```cpp #include<iostream.h> class base { int n; public: base(int a) { cout<<"constructing base class"<<endl; n=a; cout<<"n="<<n<<endl; } ~base(){cout<<"destructing base class"<<endl;} }; class subs: public base { base bobj; int m; public: subs(int a, int b, int c): base(a), bobj(c) { cout<<"constructing subclass"<<endl; m=b; cout<<"m="<<m<<endl; } ~subs(){cout<<"destructing subclass"<<endl;} }; void main() { subs ss(1,2,3); } ``` 这个例子展示了带有初始化列表的构造函数和嵌套类的继承。`base` 类现在有一个私有成员变量 `n`,并使用一个带有参数的构造函数来初始化。`subs` 类不仅继承了 `base`,还包含了一个 `base` 类型的成员变量 `bobj` 和一个整型变量 `m`。在 `subs` 类的构造函数中,`base(a)` 初始化当前对象的 `base` 部分,而 `bobj(c)` 初始化内部的 `base` 对象 `bobj`。同样,析构函数的调用顺序仍然是先子类后基类。 这个练习旨在帮助学习者理解和实践C++中的类继承机制,包括如何定义基类和子类,以及如何在子类中访问和初始化基类的成员。同时,它也涉及到了构造函数和析构函数的调用顺序,以及如何处理嵌套类实例的生命周期。通过这样的练习,可以加深对面向对象编程思想的理解,并提高代码复用和设计效率。