您的位置:首页 > 编程语言 > C语言/C++

C++ 继承

2016-01-26 00:00 323 查看
继承
l 继承规则: 若逻辑上B 是 A 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的 功 能和属性。
l 示例
Class person{
Public:
void fun();
private:
tring sex;
int old
};
Class chinese: public person
{
 
3ff0
; private:
string fuse;;
};
l 继承方式
1, public 继承 :子类可以访问基类非私有成员,继承后性质不变。
2, protected 继承 : 子类可以访问基类的非私有成员,继承后并将它们转换成 protected 性质。
3, private 继承, 子类可以访问基类的非私有成员,继承后并将它们转换成 privated 属性。
class A
{
public:
int a;
void fun();
protected:
int b;
private:
int c;
};

l 子类构造方式
先构造基类,再构造子类。基类成员变量的初始化由基类构造函数完成,除此之外,一般子类访问基类都是通过基类的成员函数去访问的(基类的私有成员子类 只能 通过基类的成员函数去访问)。
class A class B:public A
{ public: A(int x) {x=0 } { public: B(int x,int y) :A(x) {y=0 ;}
private: int x; private: int y;

} ; } ;
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
3ff0
( 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 ();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: