当指向父对象为父类型的对象的指针时,我会在生成的对象中复制父成员。
someMethod(Parent * obj);
Parent
virtual ~Parent() {}
Child : public Parent()
Child childobj = new Child();
someMethod(childobj);
在通过soemMethod传递后在内存中查看时,会显示如下所示的结果对象:
DATA[]
parentvar1
parentvar2
Child[]
->Child[]
->childvar1
->childvar2
->Parent[]
->->Parent[]
->->parentvar1
->->parentvar2
为什么我看到父数据在索引0和索引2处都重复?
答案 0 :(得分:1)
我只是在猜测,因为你的术语很难理解。
我猜你正在查看调试器的数据,例如Visual Studio,而你的程序目前在Parent
类的某些方法中。
在调试器中,您将看到this
对象中的数据以及堆栈上的变量,您称之为“索引0”。其中一个变量是另一个Child
对象。由于Child
是Parent
的子类,因此您将看到Child
的属性以及它继承的Parent
属性(您称之为“索引”) 2" )。
在这种情况下,您没有看到任何复制,您只是在调试器中从不同的角度看到相同的数据(或者可能是两个不同的实例)。