KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
What happens in the following example? struct B { }; struct D1 : B { }; struct D2 : B { }; int main() { D1 d; D2 d2; B& x = d; x = d2; } I know the reference is not re-assigned. x still refers to d , but then how can you assign d2 to d ? Some more: struct B { B () { x = 0; } int x; virtual void foo () { cout << "B" << endl; } }; struct D1 : B { D1 () { x = 1; } virtual void foo () { cout << "D1" << endl; } }; struct D2 : B { D2 () { x = 2; } virtual void foo () { cout << "D2" << endl; } }; int main() { D1 d; D2 d2; B& x = d; x.foo(); //D1 //x.x is 1 here x = d2; x.foo(); //also D1 //but x.x is 2 here } It seems like x.x was updated, but the vftable was not... Why?
Tags (comma-separated)
Save Edits
Cancel