C++学习笔记(四)(二)

2014-11-24 03:09:13 · 作者: · 浏览: 2
用继承的虚基类
{
protected: //保护成员
float score;
public:
Student(string name,string sex,int age,float score):Person(name,sex,age) //构造函数
{
this->score = score;
}
};

class Graduate:public Teacher,public Student // Graduate 同时继承了 Teacher和 Student 类
{
private:
float wage;
public:
Graduate(string name,string sex,int age,string title,float score,float wage):
Person(name,sex,age),Teacher(name,sex,age,title),Student(name,sex,age,score)
{
this->wage = wage; //工资
}
void show();
};

void Graduate::show()
{
cout<<"name="< cout<<"age="< cout<<"sex="< cout<<"score="< cout<<"title="< cout<<"wage="< }
int main()
{
Graduate gra("feifei","boy",20,"assistant",99,8872.6); //建立Graduate对象
gra.show();
return 0;
}

有人会问,如果一个派生类有多个直接基类,而直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类的数据成员的多分数据成员,不会重复吗?不会,因为虚基类在继承间接共同基类时只保留一份成员。

格式:

class 派生类名 : virtual 继承方式 基类名

基类与派生类之间的转换

只有公共派生类才是基类真正的子类型。

不同数据之间的自动转换和赋值,称为赋值兼容。

派生类可以向基类对象赋值。赋值时派生类舍弃自己的成员,赋值只是对数据成员的赋值,对成员函数不存在赋值问题。方向是单向的,不可逆。如果是派生类向基类的引用赋值,基类的引用不是派生类对象的别名,也不与派生类对象共用一段存储,他是派生类对象基类部分的别名。

继承与组合

在一个类中以另一各类的对象作为数据成员,称为类的组合。