c++派生类与基类的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基类对象与派生类对象的使用关系
1.派生类对象作为基类对象处理
由于派生类具有所有基类的成员,所以把派生类的对赋给基类对象是合理的,不过要求这种继承方式必须是public方式。但是,反过来赋值会使基类中一具有派生类的成员(因为派生类的成员通常是比基类的成员多),所以这是不允许的。
2.基类指针指向派生类对象
因为派生类对象也是基类对象,所以指向派生类对象的指针可以转换为指向基类对象的指针,这种引用方式是安全的,但是用这种方式只能引用基类成员。如果试图通过基类指针引用那些只有在派生类中才有的成员,编译系统会报告错误。
#include<>
#include<>
class Stud
{
char name[10];
int score;
public:
Stud(char na[],int s)
{
strcpy(name,na);
score=s;
}
void disp()
{
cout< if(score>=90) cout<<"优"< else if(score>=80) cout<<"良"< else if(score>=70) cout<<"中"< else if(score>=60) cout<<"及格"< else cout<<"不及格"< } }; class Unstud:public Stud { char cname[10]; public: Unstud(char na[],char cn[],int s):Stud(na,s) { strcpy(cname,cn); } }; class Grstud:public Stud { char research[10]; public: Grstud(char na[],char rs[],int s):Stud(na,s) { strcpy(research,rs); } }; int main() { Stud *p; Unstud st1("李明","计科02",85); Grstud st2("王华","数据挖掘",92); p=dynamic_cast p->disp(); p=dynamic_cast p->disp(); } 3.派生类指针强制指向基类对象 直接用派生类指针指向基类的对象,这种方式会导致语法错误。但可以将派生类强制转换为基类指针,然后就可以调用基类的成员了。这种强制转换使用的静态转型运算符,其使用格式如下: 派生类对象指针=static_static<派生类*>(&基类对象);