读书笔记:Effective C++ 2.0 版,条款37(不要重新定义继承而来的非虚函数)、条款38(不重新定义继承而来的缺省参数值)

条款37: 决不要重新定义继承而来的非虚函数

非虚函数在编译期静态绑定,容易出错。

概念上也不合适。

任何条件下都要禁止重新定义继承而来的非虚函数。

条款38: 决不要重新定义继承而来的缺省参数值

继承一个有缺省参数值的虚函数。

虚函数是动态绑定而缺省参数值是静态绑定的。

c 复制代码
enum ShapeColor { RED, GREEN, BLUE };
class Shape {
public:
  virtual void draw(ShapeColor color = RED) const = 0;
};
class Rectangle: public Shape {
public:
  virtual void draw(ShapeColor color = GREEN) const;
};
class Circle: public Shape {
public:
  virtual void draw(ShapeColor color) const;
};
相关推荐
k***92165 分钟前
C语言模拟面向对象三大特性与C++实现对比
java·c语言·c++
咔咔咔的22 分钟前
1351. 统计有序矩阵中的负数
c++
挖矿大亨24 分钟前
c++中的函数调用运算符重载
前端·c++·算法
qq_3106585124 分钟前
webrtc源码走读(一)WebRTC源码结构拆分
服务器·c++·音视频·webrtc
Cx330❀29 分钟前
《C++ 递归、搜索与回溯》第1题:汉诺塔问题
开发语言·c++·算法·面试·回归算法
qq_3106585133 分钟前
webrtc源码走读(二)应用层如何使用WebRTC API实现功能
服务器·c++·音视频·webrtc
草莓熊Lotso33 分钟前
Qt 入门核心指南:从框架认知到环境搭建 + Qt Creator 实战
xml·开发语言·网络·c++·人工智能·qt·页面
老王熬夜敲代码38 分钟前
模版元编程variant
c++·笔记
Tipriest_40 分钟前
Linux 下开发 C/C++ 程序为什么头文件引用路径这么多和复杂
linux·c语言·c++
你好音视频41 分钟前
FFmpeg HLS编码流程深度解析:从数据包到播放列表的完整实现
c++·ffmpeg·音视频