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

C++之继承的方式

  • 继承,基于一个已有类创建新类,使新类与已有类具有同样的功能,即新类具有已有类相同的数据成员和成员函数。
  • 继承是代码重用的基本工 具。已有类称为基类(父类 /超类),新类称为派生类(子类)

  • 注意:
    • 基类的构造函数和析构函数不能继承
    • 基类的友元函数不能继承
    • 静态数据成员和静态成员函数不能继承

继承的方式

  • C++的继承可以分为公有继承、保护继承和私有继承
  • 不同继承方式会不同程度影响基类成员在派生类的访问权限
  • 语法格式:
class派生类名:继承方式 基类名{派生类成员声明与定义}
访问控制限定符访问控制属性内部子类外部友元
public公有成员okokokok
protected保护成员okoknook
private私有成员oknonook
基类中的在公有子类中变成在保护子类中变成在私有子类中变成
公有成员公有成员保护成员私有成员
保护成员保护成员保护成员私有成员
私有成员私有成员私有成员私有成员

公有继承

  • 继承方式为public的继承称为公有继承,在这种继承中,基类成员的访问权限在派生类中保持不变
#include<iostream>usingnamespacestd;classBase{private:intm_a;protected:intm_b;public:intm_c;Base(inta=1,intb=2,intc=3){m_a=a;m_b=b;m_c=c;}intgeta(){returnm_a;}};classDerived:publicBase{public:voidprint(){//cout << m_a << endl; //errorcout<<geta()<<endl;cout<<m_b<<endl;cout<<m_c<<endl;}};intmain(void){Derived test;//cout << test.m_a << endl; // error private//cout << test.m_b << endl; // error protectedcout<<test.m_c<<endl;return0;}

保护继承

#include<iostream>usingnamespacestd;classBase{private:intm_a;protected:intm_b;public:intm_c;Base(inta=1,intb=2,intc=3){m_a=a;m_b=b;m_c=c;}intgeta(){returnm_a;}};classDerived:protectedBase{public:voidprint(){//cout << m_a << endl; //errorcout<<geta()<<endl;cout<<m_b<<endl;cout<<m_c<<endl;}};intmain(void){Derived test;//cout << test.m_a << endl; // error private//cout << test.m_b << endl; // error protectedcout<<test.m_c<<endl;//protected继承 子类中该变量为protected errorreturn0;}

私有继承

#include<iostream>usingnamespacestd;classBase{private:intm_a;protected:intm_b;public:intm_c;Base(inta=1,intb=2,intc=3){m_a=a;m_b=b;m_c=c;}intgeta(){returnm_a;}};classDerived:privateBase{public:voidprint(){//cout << m_a << endl; //errorcout<<geta()<<endl;cout<<m_b<<endl;cout<<m_c<<endl;}};intmain(void){Derived test;//cout << test.m_a << endl; // error private//cout << test.m_b << endl; // private继承 error private//cout << test.m_c << endl; //private继承 子类中该变量为private errorreturn0;}
http://www.jsqmd.com/news/357396/

相关文章:

  • Phi-4-mini-reasoning在C++项目中的集成指南
  • GLM-4-9B-Chat-1M本地部署教程:百万token长文本模型一键启动
  • 论文写不动?AI论文写作软件千笔写作工具 VS 万方智搜AI,本科生专属神器!
  • 直接上结论:专科生专用AI论文网站,千笔AI VS 学术猹!
  • 基于阿里小云KWS模型的智能会议记录系统开发
  • 雄安 “极数“ 大模型登场:智能城市的 “数据引擎“ 如何重构 AI 产业生态
  • Wine Is Not an Emulator
  • springboot研究生招生咨询系统_开题报告
  • WuliArt Qwen-Image Turbo效果展示:雨夜霓虹反射、玻璃折射、毛发细节等复杂光照建模
  • 2025年-2026年铝单板厂家权威解读 | 企业选型策略与选型避坑指南(基于行业权威测评标准) - 品牌推荐
  • 程**修**道(1)
  • 有环图dfs
  • 【OI】数论基础
  • springboot学习资源推荐系统_开题报告_晓庄
  • 2025年-2026年铝单板厂家推荐:基于三维评测的权威榜单揭晓 - 品牌推荐
  • springboot毕业设计在线寻亲网任务书 开题报告
  • springboot压力传感器论坛论文
  • 算法练习刷题题单 | 语法基础
  • 基于物联网的血压计设计(有完整资料)
  • 互联网大厂Java面试实战:核心语言、微服务与AI技术全解析
  • 【Linux系统编程】(二十九)深度解密静态链接:从目标文件到可执行程序的底层魔法
  • 从Pod到集群管理员:一次完整的K8s渗透测试工具链实战解析
  • springboot基于办公的文件材料档案管理系统
  • Linux命令-lpq(查看打印队列状态)
  • 基于物联网的智能垃圾桶系统设计与实现(有完整资料)
  • 14.多态
  • 计算机小程序毕设实战-基于SpringBoot微信小程序的医院预约挂号系统设计与实现基于springboot+小程序的医院挂号系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 基于物联网的自动灌溉系统的设计与实现(有完整资料)
  • Python 列表推导式:一行代码搞定数据处理
  • 为什么 “Aa“ 和 “BB“ 的哈希值一样?聊聊 Java 里的“算法炸弹”