1.子类继承父类的继承方式:public,private,protected,不写则默认为private;

2.子类会继承父类的全部成员(除了构造函数、析构函数,虽然析构函数有virtual,但是不是继承的意思),全盘接受,没得选,不能只继承一部分,而不继承另一部分,这样就可能造成数据冗余,在继承时可能会继承了一大堆没用的东西,这个问题目前的c++也无法解决,所以继承时父类的选择要谨慎。但是,可以改变继承的成员在子类中的访问属性,即可能全盘继承了父类的成员之后访问不了!!!

3.

父类中的访问属性 继承方式 子类中的访问属性
private public/protected/private 不可访问
public public public
public protected protected
public private private
protected public protected
protected protected protected
protected private private

4.protected成员在本类内相当于private,但是在子类中就不一样了,子类中可以访问父类的protected成员。若某类声明了protected成员,就说明这个类可能要当作父类,是为了继承做准备的。

5.类外可访问类的public成员,不可访问类的private和protected成员。

6.构造函数是为了初始化类的数据成员,可以不自己定义,这样系统就会自动设置默认构造函数,也可以自己定义。因为构造函数不能继承,所以子类在初始化时要同时初始化父类,一般是在定义子类构造函数时调用父类的构造函数,声明子类构造函数时不用加上父类构造函数。

  形式:子类构造函数名(总参数表,即所有参数):父类构造函数名(参数表)

  {

     //子类新增成员初始化

  }

  e.g.student1(int n,string nam,char s,int a,string ad):student(n,nam,s)

  {

    //新增成员初始化

  }

  上述student为父类,student1为子类。

  这种方式其实和构造函数的初始化列表是一样的,如

  box(int h,int w,int l):height(h),width(w),length(len) { //新增成员初始化 }

  其实就是利用初始化表调用父类的构造函数,也可以将两者结合起来,即既有初始化表,也有父类构造函数调用,如

  student1(int n,string nam,char s,int a,string ad):student(n,nam,s),age(a),addr(ad) { }

  若一个类的数据成员中包括类对象,即对象中的对象,则可用如下方式定义:

  student1(int n,string nam,int n1,string nam1,string ad):student(n,nam),monitor(n1,nam1)

  {

  ...

  }

  上述monitor为student1中的对象(student类型的)。

7.子类和父类的转换:可以把子类的对象赋值给父类的对象,而不能反过来(没有指针的事)。

指向父类对象的指针也可以指向子类,但是只能访问子类中从父类继承的部分,不能访问子类自己新增的部分。若父类指针指向子类,则指针类型自动转换,由子类转为父类(e.g. father* p=new son;),这样,指针指向的就是子类中的父类部分。

8.类的组合:一个类中的数据成员包含另一个类的对象,类的组合是横向的,说明了是否拥有某一属性。类的继承是纵向的,说明了是否属于某一事物。组合和继承是软件重用的重要方式。

最新文章

  1. 【BZOJ-2119】股市的预测 后缀数组
  2. js中文乱码怎么解决【转】
  3. HDU3434 Sequence Adjustment
  4. inotify--内核中文件系统的通知机制
  5. NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方
  6. 五分钟solr4.5教程(搭建、运行)
  7. 笔记本PS/2键盘无法使用,试下这个方法
  8. MVC 中集成 AngularJS1
  9. zoj1027 Human Gene Functions
  10. hibernate--多对多单向关联 (重点!!!)
  11. [转载] epoll详解
  12. Leetcode 27——Remove Element
  13. 解密:Amazon亚马逊产品Listing关键词刷单排名原理
  14. spring boot websocket stomp 实现广播通信和一对一通信聊天
  15. Clustering[Evaluation]
  16. COLUMN_FORMAT 的值:FIXED、DYNAMIC、DEFAULT 的区别(待补充)
  17. Shell教程 之变量
  18. 转:EM算法总结
  19. <转>SQL 左外连接,右外连接,全连接,内连接
  20. Java 编程下简介 Class 与类加载

热门文章

  1. 加载之ready和onload
  2. js常用操作事件
  3. POJ3468 A Simple Problem with Integers —— 线段树 区间修改
  4. vmware中鼠标在部分区域不能使用
  5. IOS应用在iPhone5和iPhone5s上不能全屏显示,应用画面上下各有1条黑色的解决方案
  6. MSTAR MIPS DUMP查找方法
  7. appium学习【五】【转】appium实现屏幕向左滑动
  8. Swift4 扩张(Extenstion), 集合(Set)
  9. 洛谷 P3952 时间复杂度【模拟】
  10. vsftpd 配置文件