四、C++ 类的继承
创始人
2024-01-30 19:51:41
0

文章目录

  • 一、引言
    • 1.1 类成员的三种类型
    • 1.2 访问控制和继承
  • 二、类的继承
    • 2.1 格式
    • 2.2 继承类型
  • 三、多继承

一、引言

1.1 类成员的三种类型

我们知道,在类中一共有三种类型,分别为public,private和protected,默认为private,在结构中,默认是public

1.2 访问控制和继承

在这里插入图片描述

可见,在一个类中,只有类内的成员才可以访问private

二、类的继承

2.1 格式

继承允许我们依据一个类来创建一个类,这个已有的类称为基类,新创建的类称为派生类

class derived-class: access-specifier base-class1,access-specifier class2 ......

2.2 继承类型

  • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
  • 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
  • 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
  • 代码实现:
    #include using namespace std;// 定义基类
    class Student
    {
    public:char name;private:int age;protected:double height;
    };
    //
    // public继承:可以访问public,portected
    // public-->public
    // protected-->protected
    class Public : public Student
    {
    public:void set_name(char name);char get_name(void);
    };void Public::set_name(char na)
    {name = na;
    }char Public::get_name()
    {return name;
    }
    //// private继承:可以访问public,portected
    // public-->private
    // protected-->private
    class Private : private Student
    {
    public:void set_name(char name);char get_name(void);
    };void Private::set_name(char na)
    {name = na;
    }char Private::get_name()
    {return name;
    }
    /
    // protected继承可以访问public,portected
    // public-->portected
    // protected-->portected
    class Protect : protected Student
    {
    public:void set_height(double hei);double get_height(void);};void Protect::set_height(double hei){height = hei;
    }double Protect::get_height(void){return height;
    }///
    int main()
    {Public student1;student1.set_name('a');cout << "name of student1:" << student1.get_name() << endl;Private student2;student2.set_name('b');cout << "name of student2:" << student2.get_name() << endl;Protect student3;student3.set_height(30.0);cout<<"height of student3:"<< student3.get_height()<
  • 运行结果:
    name of student1:a
    name of student2:b
    height of student3:30
    

三、多继承

有时候,一个派生类可以从多个基类中继承,这种继承方式称为多继承

  • 格式:
    class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
    {
    <派生类类体>
    };
    
  • 代码实现:
    #include using namespace std;// 基类1
    class Shape
    {
    public:void set(double w, double h);protected:double height;double weight;
    };void Shape::set(double w, double h)
    {height = h;weight = w;
    }// 基类2class Cost
    {
    public:double cost(double area);
    };double Cost::cost(double area)
    {return area * 100;
    }
    // 派生类
    class Rectangle : public Shape, public Cost
    {
    public:double get_area();
    };double Rectangle::get_area()
    {return height * weight;
    }int main()
    {Rectangle rec;rec.set(20.333, 2.22323);double area = rec.get_area();cout << rec.cost(area) << endl;return 0;
    }

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...