虚拟函数默认参数的问题

UPCCPU 2002-11-10 10:41:16
两个类定义如下:
class Base
{
public:
virtual void fun(int a = 10)
{
cout<<"Base::fun a = "<<a;
}
};

class Decent : public Base
{
public:
void fun(int a = 20)
{
cout<<"Decent::fun a = "<<a;
}
};

main()
{
Base *p = new Decent;
p->fun();
}
结果是Decent::fun a = 10
怎样使Descent::fun的默认参数值为20呢?
...全文
22 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kaye 2002-11-12
  • 打赏
  • 举报
回复
Agree to Solstice:
默认参数是静态绑定的,所以楼主的要求应该是mission impossible!
陈硕 2002-11-12
  • 打赏
  • 举报
回复
Effective C++ 条款n :绝对不要改变继承而来的virtual function的默认参数。
双杯献酒 2002-11-12
  • 打赏
  • 举报
回复
用下面的方式
Base *p = new Decent;
p->fun();

不可能得到 20

因为默认参数是由编译器来确定的,
所以不受多态的影响。
eric_uugames 2002-11-12
  • 打赏
  • 举报
回复
main()
{
Decent *p = new Decent;
p->fun();
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧