动态绑定会发生在堆栈上的对象吗?
例如
f()是Base和Derived中的虚函数
int main(){
Derived d1;
Based *b= new Derived();
d1.f();
b->f();
}
答案 0 :(得分:6)
虚函数适用于堆和堆栈对象。请尝试以下方法:
#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);
}
答案 1 :(得分:0)
是
很抱歉这个简短的回答,但你似乎知道发生了什么,只需要一些确认,对吗?