是否可以使指向派生类对象的基类指针访问在派生类中被声明的新成员?

时间:2014-10-10 16:38:43

标签: c++ oop inheritance

我编写了以下代码,其中我创建了一个基类指针,指向派生类类型的对象。我可以使用箭头操作符访问从base继承的成员。但每当我尝试访问我在派生类,我得到了错误。代码在下面

#include<iostream>
using namespace std;

struct A {};

struct B: A
{
    int b;
    B() : b(5) {}
};

int main()
{
    B y;
    A *ptr=&y;
    cout<<ptr->b<<endl;
}

1 个答案:

答案 0 :(得分:0)

不,它无法访问派生类中声明的成员。 当您编写ptr-> b时,编译器会在类A中查找成员b,因为指针是类A *而A没有名为b的成员,因此导致错误。

编译器不知道指针在运行时可能指向哪个对象。