以下代碼:參考變量和的傳承
#include <stdio.h>
class Parent
{
public:
virtual void func() {printf("Parent\n");}
};
class Child1 : public Parent
{
virtual void func() {printf("Child1\n");}
};
class Child2 : public Parent
{
virtual void func() {printf("Child2\n");}
};
int main(int argc, char* argv[])
{
Parent & obj = Child1();
obj.func();
obj = Child2();
obj.func();
return 0;
}
產生以下結果:
expected: Child1 Child2.
actual: Child1 Child1.
(編上VS2010)
我想的是,vptr的沒有被分配改變。有沒有辦法讓它重新創建(除了使用指向Parent的指針並使用new賦值)?
感謝
參考資料不能被重新安排!此外臨時不能綁定到非常量引用。你的代碼不合格 –
爲什麼_would_你首先要做這個參考?如果你改變'obj',使它成爲一個對象或一個指針。 – leftaroundabout
這甚至不會編譯!請在這裏發佈一些真實的代碼。 –