news 2026/8/26 18:39:10

记录C++ 8

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录C++ 8

多态

多态是指同一个接口可以有多种不同的实现方式,多态在c++中分静态多态和动态多态:
静态多态使用函数重载和泛型编程实现
动态多态基于虚函数实现

动态绑定与静态绑定

定义:静态绑定指程序结束编译后就已经确定行为,动态绑定指在运行时确定行为
作用:把不同派生类对象都当作基类看可以屏蔽不同子类对象之间的差异,提高程序的通用性适应需求的不断变化

虚函数与动态多态的实现

在函数名字前加上virtual关键字进行声明
创建2个类并且是继承关系,基类的函数声明为虚函数,派生类继承基类并重写基类的函数,通过基类的指针或引用访问派生类对象
非类的成员函数不能定义为虚函数,类的静态成员函数不能定义虚函数,构造函数不能定义为虚函数,析构函数可以定义为虚函数,基类的某个函数声明为虚函数,派生类同名函数自动成为虚函数
#include <iostream> using namespace std; class A { public: virtual void add() {} }; class B : public A { public: void add() {} };

重写

重写的定义:派生类实现基类的虚函数
特点:不同作用域,函数名相同参数相同返回值相同基类必须要virtual关键字
原理:通过父类指针或引用指向子类对象

重载

重载的定义:同一作用域函数名相同参数不同的多个函数间构成重载
特点:相同作用域,函数名相同参数不同,返回值可有可无,virtual关键字可有可无

隐藏

定义:基类与派生类有同名函数,调用时候都是子类的函数,此时父类成员函数会被隐藏
特点:不同作用域,函数名相同,返回值和参数可同可不同
子类对象调用重新实现与父类函数同名的函数

隐藏与覆盖的区别

相同点:子类对象在调用时都是调用子类实现的成员函数
不同点:父类指针指向子类对象时 覆盖情况下,父类指针调用的函数是子类实现的函数
父类指针指向子类对象时 隐藏情况下,父类指针调用的函数是父类实现的函数

虚析构函数

建议将基类的析构函数设置为虚函数,基类的析构函数为虚函数则派生类的析构函数也会自动成为虚函数
当基类的指针指向派生类时,基类的析构函数不是虚函数就不会发生动态多态,只会调用基类的析构函数就会造成内存泄漏
#include <iostream> using namespace std; class A { private: int i; public: A() : i(10) { cout << "haha" << endl; } virtual ~A() { cout << "xixi" << endl; } }; class B : public A { private: int x; public: B() : x(5) { cout << "aabbcc" << endl; } ~B() { cout << "qqwwee" << endl; } }; int main() { A *p = new B; delete p; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 18:35:15

【官方原创】STM32CubeProgrammer 2.23新版本发布

我们很高兴地告知大家&#xff0c;STM32CubeProgrammer 2.23现已发布。 STM32CubeProgrammer 2.23是一次重大版本更新&#xff0c;本次迭代共处理290项工单&#xff0c;包含52项功能需求变更、238项缺陷修复&#xff0c;同时完成200个开发任务包。本次版本背后完成了大量底层优…

作者头像 李华
网站建设 2026/8/26 18:19:50

Altium Develop 学习资料整理

&#xff08;&#xff09;引言 Altium Develop 可以理解为 Altium Designer&#xff08;AD&#xff09; 与 Altium 365&#xff08;A365&#xff09; 能力的结合。它不仅包含传统的原理图设计、PCB 设计和规则检查功能&#xff0c;也进一步结合了工作区、项目协作、版本管理、…

作者头像 李华
网站建设 2026/8/26 18:19:41

内存为什么越跑越高?从对象回收讲透内存泄漏的原因与预防

线上服务有一种问题很让人头疼&#xff1a;刚启动时一切正常。运行几个小时后&#xff0c;内存开始慢慢上涨。再过一段时间&#xff0c;接口变慢、GC 变频繁&#xff0c;最后甚至直接 OOM。很多时候&#xff0c;这背后就是一个很典型的问题&#xff1a;内存泄漏。不少人会把内存…

作者头像 李华
网站建设 2026/8/26 18:17:13

frostmourne 部署(一)

本机用docker搭建elk环境并接入frostmourne&#xff0c;实现监控报警效果虽然logstash 和filebeat都具有日志收集功能&#xff0c;但是filebeat更轻量&#xff0c;占用资源更少&#xff0c;而不同的是logstash 具有filter功能&#xff0c;能过滤分析日志&#xff0c;所以一般都…

作者头像 李华
网站建设 2026/8/26 18:12:58

C 语言文件 IO 学习Day03:从基础函数到实战踩坑(BMP 读取 + 词典查询)

本文为 C 语言软件编程学习 Day03 笔记&#xff0c;系统梳理标准 IO 库函数、核心易混点对比&#xff0c;并结合「BMP 图片宽高读取」「英汉词典查询」两个实战项目&#xff0c;总结实操中高频踩坑点 文章目录 前言一、文件 IO 核心函数全解 1. fgetc&#xff1a;读取单个字符2…

作者头像 李华