读书笔记: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;
};
相关推荐
茉莉玫瑰花茶4 分钟前
C++11 扩展 - 模板元编程
开发语言·c++
qq_3928079513 分钟前
TCP/IP c/c++
网络·c++
柏木乃一16 分钟前
基础IO(中)
linux·服务器·c++·io·进程·系统编程·缓冲区
天若有情67326 分钟前
详解Two Pair函数:「一次握手,一次挥手」,让函数调用更严谨、更安全
网络·c++·后端·安全·设计
Howrun77727 分钟前
虚幻引擎_UI搭建流程
c++·游戏引擎·虚幻
信奥卷王41 分钟前
2025年9月GESPC++四级真题解析(含视频)
数据结构·c++·算法
朔北之忘 Clancy43 分钟前
第一章 顺序结构程序设计(2)
c++·算法·青少年编程·竞赛·教材·考级·讲义
Ccjf酷儿1 小时前
C++语言程序设计 (郑莉)第十一章 流类库与输入/输出
开发语言·c++
CSDN_RTKLIB1 小时前
【字符编码】constexpr、char[]赋值汉字
c++
啟明起鸣1 小时前
【C++ 面向对象编程】补档:线程池和 MySQL 连接池的设计模式分析
开发语言·c++·mysql