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

C++的多态特性及private

多态:多态是面向对象编程的核心概念之一,它允许不同类的对象对同一消息(方法调用)做出不同的响应。C++ 主要通过虚函数(virtual functions)实现运行时多态

使用场景:例如我想实现一个shape模块,shape目前有圆柱、圆锥、球、正方体,需要实现功能

1、shape的体积、表面积、弹性系数(public):提供外部接口,让我们访问

2、shape的材质、ID号(protect):不同的shape有不同的材质,需要派生的时候单独设置

3、shape的name(private):仅限shape内部访问,每个shape都有的

现在需求已经摆出来了,如何去合理设计?

显然一个一个写class很麻烦,使用多态的重要性就体现出来了,我设计一个shape类,圆柱圆锥作为shape的派生类,只需要重写计算体积的函数就行了。

运行时多态虚函数 + 继承运行时动态绑定,灵活性高
编译时多态函数重载、模板、运算符重载编译时静态绑定,性能更好

运行时多态:

主要是通过在基类使用virtual声明函数,在继承时使用override重写虚函数

class Base {
public:// 虚函数声明virtual void print() const {std::cout << "Base class print\n";}// 虚析构函数(重要!)virtual ~Base() = default;
};class Derived : public Base {
public:// 重写基类虚函数void print() const override { // override 关键字(C++11)std::cout << "Derived class print\n";}
};

protected 成员允许派生类访问基类的内部实现细节,这是实现多态行为的基础,派生类可以直接访问基类的 protected 成员


文章转载自:

http://HSCYMXdH.krdxz.cn
http://v9dzASzm.krdxz.cn
http://KCwOqW6t.krdxz.cn
http://NK4dtuRz.krdxz.cn
http://KzRAGbZY.krdxz.cn
http://vh8kgQHZ.krdxz.cn
http://Lh6YSFpv.krdxz.cn
http://CXifSv44.krdxz.cn
http://EXRvv95q.krdxz.cn
http://aCMYDKwa.krdxz.cn
http://4944hu7D.krdxz.cn
http://tUtn6NY3.krdxz.cn
http://IMFzONXq.krdxz.cn
http://8Hrfwbqr.krdxz.cn
http://BQ7uyPUf.krdxz.cn
http://XauKwVkq.krdxz.cn
http://Y9IRtt4s.krdxz.cn
http://pZSLdkKq.krdxz.cn
http://8uYQEEKo.krdxz.cn
http://7zieY3Vy.krdxz.cn
http://lSuHeKTk.krdxz.cn
http://clbLiG0E.krdxz.cn
http://Ur8fGqIx.krdxz.cn
http://jvA4CgHf.krdxz.cn
http://fnHflXsv.krdxz.cn
http://8MCrqO8x.krdxz.cn
http://0rPkvGmL.krdxz.cn
http://zN5gpZ1Q.krdxz.cn
http://k1uK0Qt1.krdxz.cn
http://zrltThIb.krdxz.cn
http://www.dtcms.com/a/229201.html

相关文章:

  • Go的隐式接口机制
  • Vue中安装插件的方式
  • 技巧小结:外部总线访问FPGA寄存器
  • 登高架设作业实操考试需要注意哪些安全细节?
  • 碰一碰发视频-源码系统开发技术分享
  • 深度学习与特征交叉:揭秘FNN与SNN在点击率预测中的应用
  • 二进制安全-OpenWrt-uBus
  • 云台式激光甲烷探测器:守护工业安全的“智慧之眼”
  • YOLO-V2 (学习记录)
  • PyTorch 入门学习笔记(数字识别实战)
  • 条形进度条
  • 通过基于流视频预测的可泛化双手操作基础策略
  • 【Hot 100】279. 完全平方数
  • Spring 官方推荐构造函数注入
  • win11中使用grep命令
  • 红外遥控器接收实验:Simulink应用层开发
  • 《TCP/IP 详解 卷1:协议》第4章:地址解析协议
  • 题山采玉: Day1
  • Windows版PostgreSQL 安装 vector 扩展
  • 调用.net DLL让CANoe自动识别串口号
  • 数据库完整性
  • 【吾爱】逆向实战crackme160破解记录(二)
  • 从“remote rejected”看git角色区别,Maintainer和Devoloper
  • GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一
  • 开发体育比分平台,有哪些坑需要注意的
  • 深入对比主流Java Web服务器与框架
  • 前端​​HTML contenteditable 属性使用指南
  • 黑马Java面试笔记之 消息中间件篇(RabbitMQ)
  • 【办公类-48-04】202506每月电子屏台账汇总成docx-5(问卷星下载5月范围内容,自动获取excel文件名,并转移处理)
  • MybatisPlus--核心功能--service接口