派生类是基类的变种。所以基类指针引用派生类是安全的。当基类指针指向派生类的对象的时候,只能引用基类成员。如果像引用派生类中的特有成员,则必须把基类指针转化成派生类指针。
#include<iostream>
#include<cstring>
using namespace std;
class A_class
{
char name[20];
public:
void put_name(char * s)
{
strcpy_s(name,s);
}
void show_name()const
{cout<<name<<"\n";}
};
class B_class:public A_class
{
char phone_num[20];
public:
void put_phone(char * num)
{strcpy_s(phone_num,num);}
void show_phone()const
{cout<<phone_num<<"\n";}
};
int main()
{
A_class * A_p;
A_class A_obj;
B_class B_obj;
A_p=&A_obj;
A_p->put_name((char*)"Wang Liao hua");
A_p->show_name();
A_p=&B_obj;//基类指针指向派生类指针
A_p->put_name((char*)"chen ming");//调用基类成员函数
A_p->show_name();
B_obj.put_phone((char*)"3333_12345678");//调用派生类成员函数
((B_class*)A_p)->show_phone();//对基类指针进行