//<img src="https://img-blog.youkuaiyun.com/20150512213309005?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
// 可以将一个派生类的对象的地址赋给其基类的指针变量,但只能通过这个指针访问派生类中由基类继承来的隐藏对象,
//不能访问派生类中的新成员。同样也不能反过来做。
#include <iostream>
using namespace std;
class B
{
public:
B()
{
cout<<"B"<<endl;
}
void fun()
{
cout<<"B::fun()"<<endl;
}
private:
int x;
};
class D : public B
{
public:
D()
{
cout<<"D"<<endl;
}
void fun()
{
cout<<"D::fun()"<<endl;
}
void show()
{
cout<<"D::show()"<<endl;
}
private:
int y;
};
void main()
{
D d;
B *pb = &d;
pb->fun();
// pb->D::fun();
// pb->show(); //错误,通过基类的指针变量不能访问派生类中的新成员
}
<img src="https://img-blog.youkuaiyun.com/20150512213309005?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />