【发布时间】:2018-05-01 23:52:51
【问题描述】:
如果我创建某个已定义类的类型指针向量并将指针指向其中的第一个继承对象类型的对象,指向下一个地址的指针不会更改为指向移位地址因为在前一个指向的继承类中存在新的数据成员。
so 如果我定义了一个基类的new类型的数组,然后放入一个驱动类类型的对象,编译器将如何处理修改next指针的起始地址。不应该移动它或类似的东西以使一些字节可用于前一个字节。
【问题讨论】:
-
指针大小相同,无论是指向基类还是派生类。当然,正如您所提到的,如果派生类有新成员,对象的大小可能会有所不同。
-
我很难理解你的问题,但我认为答案是“否”——指针可以指向任意大小的块——这就是重点(对不起;-)
-
你的向量是否包含对象或指针?
-
如果你有一个
vector<Base>并强制它存储一个Derived,you will get object slicing。如果你有一个vector<Base *>并存储一个Derived *,那么只要虚函数在运行并且对象是正确的多态,你应该没有问题。指针大小相同。请注意,您可能需要留意 Cylons 与Base *闲逛的情况。 -
如果您不理解指针,请不要使用它们...
标签: c++ pointers dynamic-memory-allocation