Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152351
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-10 13:28
个人简介

仰望星空

文章分类
文章存档

2016年(22)

2015年(22)

我的朋友

分类: C/C++

2016-03-08 20:36:56

共有继承:
1 共有继承不改变基类成员在派生类中的。在共有继承下,基类的public成员,protect成员,private成员在派生类中保持它们在基类中相同的。
2 在派生类中定义的成员函数不能直接访问基类的私有成员,只能通过public或protect成员函数访问。 
:
1 基类的private和protect都在派生类中变成了private成员,不能被派生类的外部函数访问。
2 派生类的成员函数不能访问基类的private成员,但可以访问基类的public和protect成员,并通过它们访问基类private成员。

点击(此处)折叠或打开

  1. //下面试私用继承

  2. #include <iostream.h>
  3. #include <string.h>

  4. class Student
  5. {
  6. protected:
  7.     char *name;
  8.     int scoreNO;

  9. public:
  10.      Student (char *str = "", int sn = 1) //构造函数

  11.      {
  12.         name = new char[strlen(str)+1]; //重新分配存储空间

  13.         strcpy(name, str); //保存数据

  14.         scoreNO = sn;
  15.      }

  16.      ~Student(){delete []name;} //释放数组内存单元

  17.      //char * getname(){return name;}
  18.      //int getScoreNO(){return scoreNO;}
  19. };

  20. class GraduateStudent:protected Student //这里private和protected的作用是一样的
  21. {
  22. private:
  23.     char *instructor;

  24. public:
  25.     GraduateStudent(char *str = "", int sn = 1, char *dstr = ""):Student (str, sn)
  26.     {
  27.         instructor = new char[strlen(dstr)+1];
  28.         strcpy(instructor, dstr);
  29.     }
  30.     ~GraduateStudent(){delete []instructor;}
  31.      char *getInstructor(){return instructor;}


  32.      char * getname(){return name;}
  33.      int getScoreNO(){return scoreNO;}
  34. };

  35. void main()
  36. {
  37.     GraduateStudent Lzy("周", 19, "zh");
  38.     cout<<Lzy.getname()<<'\t'<<Lzy.getScoreNO()<<'\t'<<Lzy.getInstructor()<<endl;
  39. }

阅读(1218) | 评论(0) | 转发(0) |
0

上一篇:5、继承简单

下一篇:7、单继承构造函数

给主人留下些什么吧!~~