C++ 继承

继承

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

l 示例

Class person{

Public:

void fun();

private:

tring sex;

int old

};

Class chinese: public  person

{

   private:

  string fuse;;

};

继承方式

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

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

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

class A

{

   public:

   int a;

   void fun();

   protected:

   int b;

   private:

   int c;

};

子类构造方式

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

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;

} ;                              } ;

本课题目

分别构建学生类和研究生类,其中学生类的基本属性有姓名(私有成员),学分,学时(保护成员),学生类含以下成员函数,带参构造函数,析构函数,增加学时学分函数,求平均学分函数等;研究生类有职称属性,其它属性都由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 ();

}

你可能感兴趣的:(C++ 继承)