c++派生类与基类的关系

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(&st1);

p->disp();

p=dynamic_cast(&st2);

p->disp();

}

3.派生类指针强制指向基类对象

直接用派生类指针指向基类的对象,这种方式会导致语法错误。但可以将派生类强制转换为基类指针,然后就可以调用基类的成员了。这种强制转换使用的静态转型运算符,其使用格式如下:

派生类对象指针=static_static<派生类*>(&基类对象);

相关文档
最新文档