指向派生类对象的Base类指针的类型

时间:2014-04-30 03:41:26

标签: c++ inheritance typeinfo

指向派生类对象的基类指针的类型是否会发生变化?

如果我有类似的话:

class base{
public:
    int a;
    void doit();
};

class derived : public base {
public:
    int a,b;
    void doit();
}

然后我做了以下任务:

base *b = new derived;
cout << typeof(b); 

指针b的类型是否会变为派生的指针,或者它是否保持不变,即指向基础的指针?为什么?

1 个答案:

答案 0 :(得分:2)

代码应该是这样的:

          class A
          {};

         class B:public A
         {};


         int main()
         {

           A* a= new B();

           cout<<typeid(a).name()<<endl;
        }

输出:A *级。

因为type表示指针的类型(base *),而不是它所指向的对象的类型。