我在使用引用變量時發現了一個奇怪的行爲。引用變量和虛函數
下面是類實現:
class Base {
public:
virtual void Method() = 0;
};
class DerivedA : public Base {
public:
virtual void Method() {}
}
class DerivedB : public Base {
public:
virtual void Method() {}
}
這裏是具有奇怪的行爲的示例代碼:
void main(int argc, char *argv[]) {
DerivedA a;
DerivedB b;
Base &base = a;
base.Method(); // Calls DerivedA::Method
base = b;
base.Method(); // Calls DerivedA::Method!!! Why doesn't call DerivedB.Method()?
}
總之,似乎「關聯」的虛函數指針表參考變量僅在初始化參考變量時確定。如果我重新分配參考變量,則vfpt不會更改。
這裏會發生什麼?
我認爲這個答案值得綠剔! – Walter
是的,我認爲這應該是被接受的答案。 – Rafid
謝謝,雖然接受的答案是一個提問者已經接受,並且沒關係,他接受了其他答案;-) –