小工具知识网

当前位置: 首页 > 行业知识 > 【C++】继承

行业知识

【C++】继承

2026-10-20 20:19:09 来源:互联网转载

目录

    • 一、概念及定义
      • 1.1 概念
      • 1.2 定义
      • 1.3 继承方式与访问权限
      • 二、基类与派生类对象的赋值转换
      • 三、继承中的作用域
      • 四、派生类的默认成员函数
      • 五、继承与友元
      • 六、继承与静态成员变量
      • 七、菱形继承与菱形虚拟继承
      • 八、���承与组合

        一、概念及定义

        1.1 概念

        以前我们的接触过函数复用,而继承就是一种类复用,减少代码的重复性。继承可以在原有类的基础上扩展新的功能,产生新的类叫派生类或子类,原有类叫基类或父类。比如说学生类和老师类,它们共同的成员变量有名字和年龄,这时就可以写个Person类来处理公共的成员变量,不需要学生类和老师类自己再写名字和年龄的成员变量,只要写自己的独有的那部分即可。

        1.2 定义

        继承的写法:

        class B : public A

        B是子类,A是父类,中间要加冒号,public是继承方式(继承方式有3种)

        如果是多继承:用逗号分开

        class C : public A, public B

        看下面代码:

        class Person{public:void Print(){cout public:private:int _stuid;};class Teacher :public Person{public:private:int _jobid;};int main(){Student s;s.Print();return 0;}public:protected:string _name = "yss";int _age = 19;};class Student : public Person{public:void Print(){cout public:void Print(){cout public:void Print(){Person::Print();cout public:Person(const char* name):_name(name){cout public:Student(const char* name, const int num):_num(num), Person(name)//调用父类的构造函数{cout Student s("yss", 122);return 0;}cout cout if (this != &p){_name = p._name;cout if (this != &s){_num = s._num;Person::operator=(s);cout cout Person::~Person();cout public:friend void display(const A& a, const B& b);protected:int _a = 10;};class B :public A{public:protected:int _b = 20;};void display(const A& a, const B& b){cout A aa;B bb;display(aa, bb);return 0;}public:A(){count++;}static int count;};int A::count = 0;class B :public A{public:B(){count++;}};int main(){B b;cout public:string_name;};class Student :public Person{protected:int _stuid;};class Teacher :public Person{protected:int _jobid;};class Mine :public Student, public Teacher{protected:int _age;};int main(){Mine m;m._name = "yss";return 0;}public:int _a;};class B : public A{public:int _b;};class C :public A{public:int _c;};class D :public B, public C{public:int _d;};int main(){D dd;dd.B::_a = 1;dd.C::_a = 2;dd._b = 3;dd._c = 4;dd._d = 5;return 0;}

上一篇:2核4g的物理服务器(2核4g服务器够用吗)

下一篇:WordPress源码安装全攻略,轻松搞定,零基础也能上手!