感谢CSDN的同学热心回答.现在mark down.
这个新对象的储存结构仍是类B,但是p是基类对象所以没办法访问f()和a,
QUESTIION:
class A{};
class B:public A{
public:
void f();
int a;
}
int main()
{
A * p=new B();
}
//用p无法访问B类的数据和成员函数,那么这个新建的对象存不存在f()和a?
这个新对象的储存结构仍是类B,但是p是基类对象所以没办法访问f()和a,
所以需要加virtual让f成为虚函数,或者dynamic_cast类型转向子类,
又或者((B*)p)->f(),((B*)p)->a
本文探讨了 C++ 中的类继承与多态使用案例,具体分析了基类指针指向派生类对象时如何访问派生类成员变量及成员函数的问题,并提供了几种解决方案。

686

被折叠的 条评论
为什么被折叠?



