Effective C++ .37 virtual函数中默认参数的表现
2014-12-22 21:17
141 查看
#include <iostream> #include <cstdlib> using namespace std; class Pen { public: virtual void write(int color = 0) { cout<<"write with color:"<<color<<endl; } }; class Pencil : public Pen{ public: void write(int color = 128) { cout<<"write with color:"<<color<<endl; } }; int main() { Pen* p = new Pencil(); p->write(); return 0; }
输出:
write with color:0
即虚函数,执行那个函数是运行时决定的,但是其默认参数却是静态决定的,用了什么类型的指针就使用哪套默认参数。
因而最好不要再virtual函数中出现默认参数
相关文章推荐
- 读书笔记 effective c++ Item 37 永远不要重新定义继承而来的函数默认参数值
- 飞思卡尔IMX6修改uboot默认启动参数
- Qt的槽可以使用默认参数
- python中函数默认参数的陷阱(《改善python程序的91个建议》)
- 关于IIS应用程序池的默认参数设置解决
- SpringBoot Web项目的参数绑定:URL传参及默认参数设置
- Lua 之 奇葩的默认参数 设置
- 修改Tomcat默认编码,防止页面中文参数乱码
- Scala 趣题 18 偏函数对默认参数的影响
- 3.C++内联函数,默认参数,占位参数
- C++中的函数默认参数
- C++之带有默认参数值的构造函数
- 类继承中默认参数值问题
- python中的默认参数self
- 帆软连接默认数据库的参数
- error C2648: “MyDoublyLinkedlist<int>::length”: 将成员作为默认参数使用要求静态成员
- 函数的默认参数
- MySQL5.6 默认参数改变一览表
- hadoop core 默认配置文件(core-default.xml)参数解析(二)