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

c++类和对象-继承

参考链接:46 类和对象-继承-继承方式_哔哩哔哩_bilibili

1.概述

作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语,欧洲人黄头发,说英语。

2.子类继承属性访问权限

子类会继承父类所有非静态成员属性(包括方法和变量

继承方式:public、protected、private

子类无法访问父类private权限内容(内存模型中其实也被继承了,被编译器隐藏了)

public成员protected成员private成员
public继承public访问权限protected访问权限不可访问
protected继承protected访问权限protected访问权限不可访问
private继承private访问权限private访问权限不可访问

3.构造和析构顺序

先调用父类构造函数,再调用子类构造函数

先调用子类析构函数,再调用父类析构函数

3.1问题

1.子类构造和父类构造函数传参不同,如何激活父类构造函数?

会默认调用父类的默认构造函数,父类不存在默认构造函数需要手动指定调用那个父类构造函数。

#include <iostream>using namespace std;	class Parent {
public:/*Parent() {cout << "Parent constructor called" << endl;}*/Parent(int age) {this->age = age; // 初始化父类成员变量cout << "Parent constructor with age called, age: " << age << endl;}~Parent() {cout << "Parent destructor called" << endl;}int age = 0; // 父类成员变量
};class Child : public Parent {
public://父类没有默认构造函数,需要手动调用父类构造函数Child() : Parent(20){cout << "Child constructor called" << endl;}Child(int age) : Parent(age + 20){this->age = age; // 初始化父类成员变量cout << "Child constructor with age called, age: " << age << endl;}~Child() {cout << "Child destructor called" << endl;}};void test() {Child child(10); // 创建 Child 对象时会调用 Parent 的构造函数
}int main() {test();return 0;
}

输出

4.继承中同名成员处理

1.子类同名变量会直接覆盖父类变量

2.同名成员函数会隐藏父类所有该名字的函数(不会触发重载

3.通过添加父类作用域可以访问父类同名被隐藏的变量和方法

其他

1.子类对象大小为子类所有非静态成员变量大小(包括所有继承自父类的成员变量)

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

相关文章:

  • 打家劫舍与最长有效括号:动态规划与字符串处理的双重魅力
  • 也说字母L:柔软的长舌
  • Cursor 0.51 全网首歌新功能深度体验:Generate Memories 让 AI 编程助手拥有“记忆“
  • Docker私有仓库Harbor安装指南
  • SQL进阶之旅 Day 11:复杂JOIN查询优化
  • pytorch学习之矩阵分解
  • 在Linux中配置内网可访问的YUM光盘源
  • Python实例题:自联想器的Python实现
  • 【存储基础】存储设备和服务器的关系和区别
  • UE特效Niagara性能分析
  • 【保姆级教程】PDF批量转图文笔记
  • SystemVerilog—Interface语法(二)
  • 谷粒商城-分布式微服务项目-高级篇[三]
  • 华为云Flexus+DeepSeek征文|华为云 Dify 打造智慧水果分析助手,实现“知识库 + 大模型”精准赋能
  • MybatisPlus(含自定义SQL、@RequiredArgsConstructor、静态工具类Db)
  • mac电脑安装 nvm 报错如何解决
  • 【华为云Astro Zero】组装设备管理页面开发(图形拖拽 + 脚本绑定)
  • 【更正补全】edu教育申请通过方案
  • vLLM实战部署embedding、reranker、senseVoice、qwen2.5、qwen3模型
  • STM32G4 电机外设篇(四)DAC输出电流波形 + CAN通讯
  • mybatis03
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • new语法
  • TDengine 高级功能——读缓存
  • R语言基础| 创建数据集
  • 常见 Web 安全问题
  • MySQL数据库从0到1
  • Java设计模式之备忘录模式详解
  • 第九章:LLMOps自动化流水线:释放CI/CD/CT的真正力量
  • OpenRouter使用指南