指向派生类对象的基类指针的类型是否会发生变化?
如果我有类似的话:
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的类型是否会变为派生的指针,或者它是否保持不变,即指向基础的指针?为什么?
答案 0 :(得分:2)
代码应该是这样的:
class A
{};
class B:public A
{};
int main()
{
A* a= new B();
cout<<typeid(a).name()<<endl;
}
输出:A *级。
因为type表示指针的类型(base *),而不是它所指向的对象的类型。