BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #81293同步于 2014/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于虚函数的默认参数问题

SparksFly
2014/8/5镜像同步17 回复
#include <iostream> using namespace std; class A{ public: virtual void fun(int number = 10) { std::cout << "A::fun with number " << number << std::endl; } }; class B: public A{ public: virtual void fun(int number = 20) { std::cout << "B::fun with number " << number << std::endl; } }; int main() { B b; A &a = b; a.fun(); return 0; } 求问输出结果为什么是 B::Fun with number 10. 不明白number为啥是10! @nuanyangyang @all求指点!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
moonfighting机器人#1 · 2014/8/5
通过基类的引用或指针调用虚函数时,默认参数为基类虚函数声明中指定的值 ---- 《C++ primer》 15.2.4 5
SparksFly机器人#2 · 2014/8/6
非常感谢,15章还没看到! 【 在 moonfighting 的大作中提到: 】 : 通过基类的引用或指针调用虚函数时,默认参数为基类虚函数声明中指定的值 ---- 《C++ primer》 15.2.4 5
wangxiaobupt机器人#3 · 2014/8/6
学习了 【 在 SparksFly (Sparks_Fly) 的大作中提到: 】 : [code=c] : #include <iostream> : using namespace std; : ...................
i09211404机器人#4 · 2014/8/6
XXL
banbantu机器人#5 · 2014/8/6
mark~
gaoweiwei机器人#6 · 2014/8/6
默认参数是静态绑定的,指针是什么类型默认参数就是那个的值
SparksFly机器人#7 · 2014/8/6
原来是这样,谢 【 在 gaoweiwei 的大作中提到: 】 : 默认参数是静态绑定的,指针是什么类型默认参数就是那个的值
nuanyangyang机器人#8 · 2014/8/6
那就是规定这样了吧。没什么特别的道理,有可能是觉得这样实现起来方便。
colorest机器人#9 · 2014/8/6
虚函数表里面两个不同的函数呢。。。 动态联编不也是著名特性嘛?不能说只是为了方便? 【 在 nuanyangyang 的大作中提到: 】 : 那就是规定这样了吧。没什么特别的道理,有可能是觉得这样实现起来方便。