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

c++ 类的语法2

类继承相关语法,写个demo,示例1:

void testClass2() {// 测试类继承中的访问权限class Base {public:int x;protected:int y;private:int z;public:Base() : x(0), y(0), z(0) {print();}virtual void print() { // 虚函数,子类可以覆盖cout << "Base print ..." << "x: " << x << " ,y: " << y << " ,z: " << z << endl;}int getZ() {return z;}};// 继承方式为public, 则子类中x访问权限为public,y为protected, z为private; // 成员变量访问权限会取最小,比如private继承,父类任何变量都不可访问class PublicExtend : public Base {// x 是 public,y 是 protected,z 不可访问public:void print() override { // 重写基类虚函数 , override:显式标记重写的虚函数,编译器会检查签名一致性cout << "subClass  print" << "x: " << x << " ,y: " << y << " ,z: " << getZ() << endl; // 父类的z是私有变量不可见,用getZ函数获取}};PublicExtend obj;
}

打印:

这个示例中, 父类有无参构造函数,子类没有构造函数。 测试结论是,子类实例化时自动调用了父类的构造函数。

示例2,子类和父类都有无参构造函数:

void testClass2() {// 测试类继承中的访问权限class Base {public:int x;protected:int y;private:int z;public:Base() : x(0), y(0), z(0) {print();}virtual void print() {cout << "Base print ..." << "x: " << x << " ,y: " << y << " ,z: " << z << endl;}int getZ() {return z;}};// 继承方式为public, 则子类中x访问权限为public,y为protected, z为private; // 成员变量访问权限会取最小,比如private继承,父类任何变量都不可访问class PublicExtend : public Base {// x 是 public,y 是 protected,z 不可访问public:void print() override { // 重写基类虚函数 , override:显式标记重写的虚函数,编译器会检查签名一致性cout << "subClass  print" << "x: " << x << " ,y: " << y << " ,z: " << getZ() << endl; // 父类的z是私有变量不可见,用getZ函数获取}// 构造函数PublicExtend() { // 没有显式调用父类构造函数print();}};PublicExtend obj;
}

打印:

打印日志说明调用了父类构造函数,然后调用子类构造函数。所以结论:当子类构造函数‌未显式调用父类构造函数‌时,编译器会‌自动调用父类的默认无参构造函数‌(前提是父类存在该构造函数)

http://www.xdnf.cn/news/5507.html

相关文章:

  • Windows使用虚拟环境执行sh脚本
  • 【深度学习】将本地工程上传到Colab运行的方法
  • (十一)Java面向对象进阶:深入理解抽象类、接口与内部类
  • 如何使用依赖注入来实现依赖倒置原则?
  • RK35XX 环境搭建
  • [ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响
  • python打卡训练营打卡记录day22
  • Java SSM 框架(详解)
  • Java 多态:原理与实例深度剖析
  • 【Java学习日记36】:javabeen学生系统
  • [思维模式-30]:《本质思考力》-30- 计划经济与市场经济结合中的“自顶向下”与“自底向上”思维模式。
  • PXE安装Ubuntu系统
  • 免安装 + 快速响应Photoshop CS6 精简版低配置电脑修图
  • 计算机网络笔记(二十二)——4.4网际控制报文协议ICMP
  • # Anaconda3 常用命令
  • Grafana v12.0 引入了多项新功能和改进
  • KAG:通过知识增强生成提升专业领域的大型语言模型(四)
  • 【LeetCode Hot100 | 每日刷题】排序数组
  • 内存泄露,如何判断是资源泄露还是堆栈泄露?
  • Telnetlib 库完全指南
  • MySQL 索引与事务详解
  • 巧用promise.race实现nrm镜像源切换----nbsl
  • 冒泡排序的原理
  • 数据指标和数据标签
  • 「银河通用」创始人王鹤:人形机器人跳舞是预先编程,马拉松是遥控操作!
  • C语言文件读写函数详解与示例(fread、fgets、fgetc、fscanf、fwrite、fputs 和 fputc比较)
  • 专业课复习笔记 5
  • 可视化赋能电子围栏:开启智能安防新视界
  • 9.1.领域驱动设计
  • 大模型应用中常说的Rerank是什么技术?