当前位置: 首页 > 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.mrgr.cn/news/10195.html

相关文章:

  • HDMI接口驱动设计验证
  • vue2项目中滚动的自动和停止
  • MonkeyRunner在自动化测试里的应用场景
  • 百度文本内容审核
  • keepalived的技术原理及其在负载均衡场景中的应用
  • RockPI 4A单板Linux 4.4内核下的RK3399 GPIO功能解析
  • PCL-基于RANSAC的平面拟合方法
  • Windows—UDP编程
  • 文件IO
  • [JS]精选面试题-4
  • 买对不买贵,宠物空气净化器应该怎么选才能选到好的产品
  • python的浅拷贝和深拷贝
  • 大模型16:大模型部署ChatGLM-6B
  • 计算机毕业设计推荐-基于python的摄影爱好者分享平台
  • Edge 浏览器插件开发
  • 三种相机模型总结(针孔、鱼眼、全景)
  • git 落后主分支提交
  • 如何有效激活微信陌生客户:加好友后的沟通策略!
  • C语言——函数
  • 66 IPV4/6 OSPFV2/3 实操