C++ 继承

继承

l 继承规则: 若逻辑上BA 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 能和属性。

l 示例

Classperson{

Public:

voidfun();

private:

tringsex;

intold

};

Classchinese: public person

{

private:

stringfuse;;

};

l 继承方式

1, public 继承 :子类可以访问基类非私有成员,继承后性质不变。

2, protected 继承 : 子类可以访问基类的非私有成员,继承后并将它们转换成 protected 性质。

3, private 继承, 子类可以访问基类的非私有成员,继承后并将它们转换成 privated 属性。

classA

{

public:

inta;

voidfun();

protected:

intb;

private:

intc;

};

l 子类构造方式

先构造基类,再构造子类。基类成员变量的初始化由基类构造函数完成,除此之外,一般子类访问基类都是通过基类的成员函数去访问的(基类的私有成员子类 只能 通过基类的成员函数去访问)。

classAclassB:publicA

{public:A(intx){x=0}{public:B(intx,inty) :A(x) {y=0;}

private:intx;private:inty;

};};

l 本课题目

分别构建学生类和研究生类,其中学生类的基本属性有姓名(私有成员),学分,学时(保护成员),学生类含以下成员函数,带参构造函数,析构函数,增加学时学分函数,求平均学分函数等;研究生类有职称属性,其它属性都由student类继承而来,研究生类需要增加以下成员函数,带参构造函数,析构函数,输出各属性值函数,要求 定义一个研究生对象分别调用各功能函数

#include<string >

#include<iostream >

using namespace std ;

class student// 学生类

{

public :

student ( string sname )

{

……

cout<<” 构造 student!”<<endl;

}

~ student()

{cout<<” 析构 student!” }

void addcorse ( int hou , int sco ) //增加学时和学分

{

……

}

void getaverage () //平均学分

{

cout << "平均学时: " <<( double ) score / hour << endl ;

}

……

protected :

int hour ; //总学时

float score ; //总学分

private :

string name ;

};

class graduatestudent : public student// 研究生类

{

public :

graduatestudent ( string name , string der ) ……

{

……

cout<<” 构造 graduatestudent !”<<endl;

}

~ graduatestudent ()

{ cout<<” 析构 graduatestudent !” }

void print ()

{

cout << "姓名: " << ……< < "学时: " << ……< < "学分: " << ……< < "职称: " << ……< < endl ;

}

private :

string degree ;

};

void main ()

{

graduatestudent cai ( "wang" , "硕士 " );

cai . addcorse (20,40);

cai . getaverage ();

cai . print ();

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值