当前位置: 首页 > 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;
}

打印:

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

http://www.dtcms.com/a/184035.html

相关文章:

  • 用浏览器打开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时间类详解
  • 数字电子技术基础(五十七)——边沿触发器
  • Qt 窗口部件(2)输入部件详解
  • Canvas基础篇:虚线操作setLineDash和lineDashOffset详解
  • 前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读
  • 空战数据链基础术语解析:从概念到实战应用的入门指南
  • 联合类型的逻辑或关系与类型保护
  • 分享一个可以用GPT打标的傻瓜式SD图片打标工具——辣椒炒肉图片打标助手
  • 第26节:卷积神经网络(CNN)-数据增强技术(PyTorch)
  • 网络安全设备配置与管理-实验5-p150虚拟防火墙配置
  • Agent杂货铺