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

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;
}

打印:

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

相关文章:

  • 用浏览器打开pdf,如何使用划词翻译?
  • 《Linux命令行大全(第2版)》PDF下载
  • Python-MCPInspector调试
  • 【连载14】基础智能体的进展与挑战综述-多智能体系统设计
  • TSN网络与DIOS融合:破解煤矿井下电力系统越级跳闸难题
  • 【C/C++】const关键词及拓展
  • MYSQL数据库集群高可用和数据监控平台(详细版)
  • Anaconda环境中conda与pip命令的区别
  • 冒泡排序的原理
  • 招行数字金融挑战赛数据分析赛带赛题二
  • 英语句型结构
  • 【Java项目脚手架系列】第六篇:Spring Boot + JPA项目脚手架
  • llama.cpp初识
  • c++STL-string的模拟实现
  • Python OpenCV性能优化与部署实战指南
  • wordpress自学笔记 第三节 独立站产品和类目的三种展示方式
  • RabbitMQ--进阶篇
  • AI Agent(9):企业应用场景
  • 【Bootstrap V4系列】学习入门教程之 组件-巨幕(Jumbotron)和列表组(List group)
  • Java中的JDK7和JDK8时间类详解
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 寒武纪陈天石:公司的产品力获得了行业客户广泛认可,市场有望迎来新增量需求
  • 俄总统新闻秘书:普京提议谈判表明俄寻求和平解决方案意愿
  • 农林生物安全全国重点实验室启动建设,聚焦重大有害生物防控等
  • 重庆大学通报本科生发14篇SCI论文处理结果