当前位置: 首页 > news >正文

C++系列-继承方式

继承方式

  • 继承的语法
  • 继承方式:
    • 继承方式的特点
    • 继承方式的举例

  • 继承可以减少重复的代码。
  • 继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。
  • 基类=父类,派生类=子类,派生类是在继承了基类的部分成员基础上,加上自己的成员而产生的类。

继承的语法

class 子类名 : 继承方式 父类名1 , 继承方式 父类名2 , ..... 
{派生类的成员
};

继承方式:

  • public
  • protected
  • private

继承方式的特点

  • 无论哪种继承方式,父类中的private成员在子类中均不可以访问。
  • public继承中,父类中public和protected权限到子类中不变。
  • protected继承中,父类中的public和protected权限到子类中变为protected。
  • private继承中,父类中的public和protected权限到子类中变为private。
    在这里插入图片描述

继承方式的举例

  • public继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son : public Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};void test01(){Son s1;s1.m_public_a = 3;// s1.m_protected_a = 333;		//父类中的protected权限的成员到子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
  • protected继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: protected Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};void test01(){Son s1;//s1.m_public_a = 3;			// 父类中的public权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行// s1.m_protected_a = 333;		// 父类中的protected权限的成员到protected继承方式的子类中仍是protected, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55

  • private继承
code:#include <iostream>using namespace std;class Father{public:int m_public_a=1;protected:int m_protected_a=11;private:int m_private_a=111;public:void show_info(){cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << ", m_private_a: " << m_private_a << endl;}};class Son: private Father{public:void show_info_1(){m_public_a = 5;m_protected_a = 55;cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;//m_private_a = 555;		// 父类中的私有成员到子类中无法访问}};class Grandson: public Son{public:void show_info_1(){//m_public_a = 5;			// 在Son类中,因为是以private方式继承,原Father中的public和protected权限的成员都变成了private,所以当Grandson再使用public方式继承时,无法访问。//m_protected_a = 55;//cout << "m_public_a: " << m_public_a << ", m_protected_a: " << m_protected_a << endl;}};void test01(){Son s1;//s1.m_public_a = 3;			// 父类中的public权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行//s1.m_protected_a = 333;		// 父类中的protected权限的成员到private继承方式的子类中是private, 在类中可以访问,类外不行s1.show_info_1();}void main(){	test01();system("pause");}
result:m_public_a: 5, m_protected_a: 55
http://www.lryc.cn/news/430625.html

相关文章:

  • web前端之选项卡的实现、动态添加类名、动态移除类名、动态添加样式、激活、间距、tabBar
  • sql 优化,提高查询速度
  • springboot后端开发-自定义参数校验器
  • springboot社区帮扶对象管理系统论文源码调试讲解
  • EmguCV学习笔记 VB.Net 6.2 轮廓处理
  • 【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
  • 【机器学习】经典CNN架构
  • 图像数据处理21
  • day37动态规划+三.Github链接本地仓库
  • 设备运维故障排查与修复技巧
  • 探索Python的自动化魔法:AutoIt库揭秘
  • 【I/O多路复用】
  • 【python报错已解决】“IndexError: list index out of range”
  • oracle和mysql查询某字段在哪个表中
  • TCP vs UDP:揭秘可靠性与效率之争
  • “树”的高度的计算——CSP-J1真题详解
  • Docker介绍、docker安装以及实现docker的远程管理
  • 【UE5】基于摄像机距离逐渐剔除角色
  • LabVIEW优化内存使用
  • 多进程和多线程基础概念LINUX
  • React Native的Android端fetch的网络请求FormData请求错误:TypeError:Network request failed
  • python之matplotlib (1 介绍及基本用法)
  • ROS2常用指令
  • SQL注入(原理、分类、union、POST注入)
  • 【勒索病毒应急响应流程】
  • C ++初阶:C++入门级知识点
  • php中如何高效地实现一个函数以判断给定日期是否位于多个预定义的时间范围内,同时确保代码的可读性、可维护性和性能优化
  • 存在重复元素 II(LeetCode)
  • 认知杂谈21
  • 2024前端面试题-工程化篇