注释都添加在代码里了
#include<iostream>
#include<cstring>
using namespace std;
class CPerson
{//定义person类
public:
void set(char *p,int x,int y)
{//定义函数带参构造函数
strcpy(name,p);
num=x;
sex=y;
}
void out()
{//定义输出函数
cout<<"name:"<<name<<",num:"<<num;
if (sex==0) cout<<",sex:男"<<endl;
else cout<<",sex:女"<<endl;
}
private://私有数据项
char name[8];
int num;
int sex;
};
class CStudent:public CPerson
{//定义student类 并共有继承person类
public:
void addscore(float x)
{//定义带参构造函数
score =x;
}
void out()
{//定义输出函数
CPerson::out();//先输出person类中的输出,涉及同名覆盖
cout<<"score:"<<score<<endl;
}
private:
float score;
};
int main()
{
CPerson s;
CStudent s1;
s1.set("wu",1,0);
s1.addscore(95.5f);
//总的来说,等号右边的一定是子类对象,即大的可以给小的赋值
//也就是1.子类的对象可以给父类的对象赋值和初始化,
//2.父类的指针可以指向子类对象(即子类对象的地址可以给父类指针赋值)
//3.父类的引用可以引用子类的对象(即给子类的对象取一个父类型的别名)
s=s1;
return 0;
}