【发布时间】:2012-05-02 08:51:20
【问题描述】:
给定以下代码块:
class BaseClass
{
public:
virtual void hello() { cout << "Hello from Base" << endl; }
};
class DerivedClass : public BaseClass
{
public:
void hello() { cout << "Hello from Derived" << endl; }
};
int main()
{
BaseClass base;
DerivedClass derv;
BaseClass* bp = &base;
bp->hello();
bp = &derv;
bp->hello();
}
bp指向的类型是如何在运行时确定的?我知道它是动态绑定的,但是这样做的机制是什么? 我很困惑,因为通常答案是编译器,但是因为它是动态的,所以在这个例子中不是这种情况(或者我错了吗?我假设编译器提前了,但是什么表明 bp 现在指向派生类?)。我也是来自 C#,所以这个想法对我来说是陌生的,因为这是没有 CLR 的本机代码。
【问题讨论】:
-
确实,但是我找不到问题。我应该关闭它吗?
标签: c++ oop inheritance object polymorphism