当前位置:文档之家› c++派生类与基类的关系

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

基类对象与派生类对象的使用关系
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<派生类*>(&基类对象);

相关主题