我想知道是否有可能制作一个指针(比方说)类型A指向B型指针?如果有可能那么当你尊重它们时它们会显示相同的值吗? A = double B = int或反之?
答案 0 :(得分:0)
如果我理解正确,你有
T* ptr1; S* ptr2;
其中T
和S
是两种不同的,无关的(例如通过继承)类型,并希望ptr2
指向ptr1
ptr2 = reinterpret_cast<T*>(ptr1);
您可能无法通过ptr2
进行任何访问,因为它会破坏strict-aliasing rule。
答案 1 :(得分:0)
仅当您有A和B子类的基础时才可以这样做。 您可以使用基指针访问A和B,编译器将在运行时决定执行哪个指针。
class Base{
}
class A:Base{
}
class B:base{
}
int main(){
Base* ObjBase;
//accessing class A with Base pointer
ObjBase=new A();
//Accessing class B with Base pointer
ObjBase=new B();
}
这是类多态性。当你想拥有一个具有不同子类对象的基类的单个数组
时,你经常会需要它