我编写了以下代码,其中我创建了一个基类指针,指向派生类类型的对象。我可以使用箭头操作符访问从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;
}
答案 0 :(得分:0)
不,它无法访问派生类中声明的成员。 当您编写ptr-> b时,编译器会在类A中查找成员b,因为指针是类A *而A没有名为b的成员,因此导致错误。
编译器不知道指针在运行时可能指向哪个对象。