问题描述
我最近试图了解虚函数是如何工作的,所以我决定尝试运行以下代码。
#include <iostream>
class Base {
public:
virtual void f(int i = 10) const {
std::cout << i << std::endl;
}
virtual ~Base() = default;
};
class Derived : public Base {
public:
virtual void f(int i = 20) const override{
std::cout << i << std::endl;
}
};
int main() {
Derived d;
Base* pb = &d;
pb->f(); // prints 10
d.f(); // prints 20
return 0;
}
结果让我很惊讶,我原以为这两个函数都应该在控制台上打印 20,但不幸的是,这并没有发生。
结果如下
10
20
有人能解释一下那里发生了什么吗?
谢谢你。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)