当前位置: 首页 > 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 成员

相关文章:

  • 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自动识别串口号
  • b2c的网站有哪些/哈尔滨企业网站模板建站
  • b2b网站做网络推广有用吗/域名检测
  • 奶茶店做网站好处/网络营销策划与创意
  • 石家庄网站建设设计/怎么找平台推广自己的产品
  • 深圳结构设计/seo推广优化外包公司
  • 房地产企业网站建设/广东最新新闻