您的位置:首页 > 编程语言 > C语言/C++

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函数中出现默认参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: