读书笔记: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;
};
相关推荐
羊小猪~~6 分钟前
【QT】--文件操作
前端·数据库·c++·后端·qt·qt6.3
2501_9403152631 分钟前
【无标题】1.17给定一个数将其转换为任意一个进制数(用栈的方法)
开发语言·c++·算法
fpcc1 小时前
C++23中的模块应用说明之五综合应用和重点分
c++·c++23
xiaoye-duck2 小时前
吃透C++类和对象(下):内部类、匿名对象及编译器优化的深度解析
c++
情缘晓梦.2 小时前
C++ 内存管理
开发语言·jvm·c++
恒者走天下2 小时前
研一、大一大二学计算机应该怎么规划
c++
我是一只小青蛙8883 小时前
Windows下MATLAB与C++混合编程实战
c++
玖釉-3 小时前
[Vulkan 学习之路] 11 - 组装流水线:固定功能阶段 (Fixed Functions)
c++·windows·图形渲染
f狐0狸x3 小时前
【C++修炼之路】C++string的用法
开发语言·c++·string
阿豪只会阿巴3 小时前
【多喝热水系列】从零开始的ROS2之旅——Day9 初识话题通信:基本命令
c++·笔记·python·ubuntu·ros2