行业知识
C++基础知识(六:继承)
2026-10-29 05:26:43
来源:互联网转载
首先我们应该知道C++的三大特性就是封装、继承和多态。
���篇文章将详细的讲解继承的作用和使用方法。
- 继承
一个类,继承另一个已有的类,创建的过程
父类(基类)派生出子类(派生类)的过程
继承提高了代码的复用性
【1】继承的格式
class 类名:父类名{};【2】继承的权限
class 类名:继承的权限 父类名{};如果不写继承方式,默认是私有继承父类中的权限 public|private|protected public|private|protected public|private|protected 继承方式 public private protected子类中的权限 public|不能访问|protected private|不能访问|private protected|不能访问|protected
【3】继承时类中的特殊成员函数
特殊的成员函数不会被继承
构造函数:
- 需要在子类中显性调用父类的构造函数(初始化列表中)(透传构造)
- 透传构造
- 继承构造
- 委托构造
需要在子类中显性调用父类构造函数的场合:
父类中只有有参构造 ----->子类在创建类对象时,必须手动调用父类的构造函数
#include using namespace std;class Father{public: int age; char c; Father(int a,char c):age(a),c(c){cout int high;public: void show() { cout //Child c1; //error,因为父类只有有参构造,而子类中没有提供能够调用父类有参构造的构造函数,不能成功创建父类的空间 //Father f1; c1.age; cout public: int age; char c;// Father(){cout cout cout cout private: int high; //父类中的public成员age,通过公有继承,仍然是public using Father::age; //把父类中公有继承下来的age成员,在子类中改成私有权限public: void show() { cout Child c1(10); Child c2(20,'z'); Child c3 = c2; //Father f1; //c1.age; cout int *p;public: F():p(new int){cout delete p; cout int *p;public: C():p(new int){cout delete p; cout C *p1 = new C; delete p1; //空间释放时,会自动调用析构函数,无需手动调用 p1 = nullptr; return 0;}public: int *p; F():p(new int){cout delete p; cout public: int *p; C():p(new int){cout delete p; cout C *p1 = new C; *(p1-p) = 90; cout public: void clean() { cout public: void play() { cout cout };int main(){ Home h1; h1.play(); h1.Room::clean(); h1.BedRoom::clean(); return 0;}public: int a; //A(int a):a(a){cout public: int c; //B(int a,int c):A(a),c(c){cout public: //C(int a):A(a){cout public: //D(int a,int c):B(a,c),C(a),A(a){cout D d1; d1.B::a = 90; //二义性,还可以直接通过中间子类访问,直接访问B中的a成员 //cout public: int a;};class B:virtual public A{public: int c;};class C:virtual public A{};class D:public B,public C{};int main(){ D d1; d1.B::A::a = 90; cout
上一篇:dedecms本地怎么安装教程?
下一篇:内部网络域名解析错误怎么办