读书笔记: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;
};
相关推荐
zh_xuan14 分钟前
LeeCode 61. 旋转链表
数据结构·c++·算法·leetcode·链表
txinyu的博客18 分钟前
C++ 线程库
开发语言·c++
云深处@33 分钟前
二叉搜索树
数据结构·c++
安全二次方security²35 分钟前
CUDA C++编程指南(7.2)——C++语言扩展之变量内存空间指定符
c++·人工智能·nvidia·cuda·内存空间指定符·__shared__·__device__
近津薪荼37 分钟前
优选算法——双指针1(数组分块)
c++·学习·算法
气派飞鹰41 分钟前
windows下C++个人开发最佳实践(CMake+vcpkg+trae)
开发语言·c++·个人开发
冷崖43 分钟前
桥模式-结构型
c++·设计模式
D_evil__1 小时前
【Effective Modern C++】第三章 转向现代C++:9. 优先选用别名声明,而非typedef
c++
HellowAmy1 小时前
我的C++规范 - 回调的设想
开发语言·c++·代码规范
安全二次方security²1 小时前
CUDA C++编程指南(7.1)——C++语言扩展之函数执行空间指定符
c++·人工智能·nvidia·cuda·cuda编程·global·函数执行空间指定符