是否可以通过简单地向基类添加新的虚函数来改变程序的观察到的行为?我的意思是不必对代码进行其他更改。
以下程序打印OK。取消注释虚函数B
它将开始打印CRASH!.
#include <iostream>
struct B
{
//virtual void bar() {}
};
struct D : B
{
void foo() { bar(); }
void bar() { std::cout << "OK" << std::endl; }
};
struct DD : D
{
void bar() { std::cout << "CRASH!" << std::endl; }
};
int main()
{
DD d;
d.foo();
return 0;
}
问题是在虚函数之后B::bar()
引入了调用的绑定bar()
in D::foo()
由静态变为动态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)