返回信息流#include "iostream"
using namespace std;
class base{
private:
virtual void fun(int i=1){
cout<<"base::"<<i<<endl;
}
};
class derive:public base
{
public:
virtual void fun(int i=2){
cout<<"derive::"<<i<<endl;
}
};
int main(int argc, char const *argv[])
{
base *test = new derive();
test->fun();
return 0;
}
为什么这个函数出错呢
这是一条镜像帖。来源:北邮人论坛 / cpp / #74931同步于 2013/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教一个虚函数继承的问题
century
2013/10/31镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
编译的时候只知道test是base类型的,所以尝试通过这个指针调用private的fun应该是编译不通过的。
把private改为public就能达到你想得到的运行时动态绑定的效果了
问题有两点:
1,private 改成public,如楼上所说
2,继承层次中虚函数默认参数值不一致。最佳做法肯定是不要默认值,而是采用NVI机制。