动态绑定会发生在堆栈上的对象吗?
例如
f()是Base和Derived中的虚函数
int main(){
Derived d1;
Based *b= new Derived();
d1.f();
b->f();
}
Run Code Online (Sandbox Code Playgroud)
虚函数适用于堆和堆栈对象.请尝试以下方法:
#include <iostream>
class base
{
public:
virtual void doit()
{
std::cout << "base::doit" << std::endl;
}
};
class derived : public base
{
public:
virtual void doit()
{
std::cout << "derived::doit" << std::endl;
}
};
void invokevirtual(base &b)
{
b.doit();
}
int main()
{
derived d;
invokevirtual(d);
}
Run Code Online (Sandbox Code Playgroud)