Essential C++ 学习笔记(五)
来源:互联网 发布:淘宝售后是做什么的 编辑:程序博客网 时间:2024/05/01 05:19
5.1 面向对象编程概念
1. 面向对象风格的三个独特概念: 继承(inheritance), 多态(polymorphism), 动态绑定(Dynamic binding).
2. 多态和动态绑定的特性, 只有在使用pointer或reference时才能发挥.
5.2 面向对象编程思维
1. 当程序定义出一个派生对象时, 基类和派生类的constructor都会被执行起来. 但派生类被摧毁时, 基类和派生类的destructor
也都会被执行起来(但次序颠倒).
2. 基类被声明为protected 的所有成员都可以被派生类直接取用, 除此派生类之外, 都不得直接用protected 成员.
3. 使用派生类不需刻意区分"继承而来的成员"和"自身定义的成员", 两者的使用完全透明.
5.4 定义一个抽象基类
1. 定义抽象类的第一个步骤是找出所有子类共通的操作行为.
第二步是找出哪些行为与型别相依, 也就是说, 有哪些操作行为必须根据不同的派生类而有不同的实现方式.
第三步是试着找出每个操作行为的存取层级.
2. 每个虚拟函数, 必须有其定义. 如果对于该类而言, 这个虚拟函数并无实质意义的话, 那么可设为纯虚拟函数 (pure virtual function).
凡基类定义有一个或多个虚拟函数, 应该要将其destructor声明为virtual.
5.5 定义一个派生类
1. 在类本身之外对虚拟函数进行定义时, 不需指明关键词virtual.
2. 最好跳过虚拟函数机制, 是该函数在编译期就完成决议, 不需等到执行期才决议, 这就是为什么要指明调用对象的原因.
3. 每当派生类的某个member与基类的member同名时, 便会遮蔽住基类的那份member. 在基类和派生类中提供同名的non-virtual 函数,
并不是好的解决方法.
5.7 基类应该多抽象
1. data members 如果是个reference, 则必须在constructor的 member initialization list中加以初始化. 如果data members 是个pointer,就无此限制:
可以在constructor内加以初始化, 也可以先将它初始化为null, 稍后再令他指向某个有效的内存地址.
5.9 在派生类中定义一个虚拟函数
1. 在派生类中, 为了改写基类的某个虚拟函数, 而进行声明操作时,不一定要加上关键词virtual.
2. 在基类得constructor中, 派生类的虚拟函数绝对不会被调用.
3. 多态需要一层间接性, 唯有以基类的pointers和references才能支持面向编程的概念.
- Essential C++ 学习笔记(五)
- c++学习笔记(essential c++)
- 《Essential C++》笔记五、基于对象的编程风格
- 《Essential C++》笔记1
- 《Essential C++》读书笔记(五)
- Essential C++学习笔记
- Essential C++学习笔记-------第一章
- Essential C++ 学习笔记(三)
- Essential C++ 学习笔记(四)
- Essential C++ 学习笔记(六)
- Essential C++ 学习笔记(七)
- c语言学习笔记五
- C/C++学习笔记(五)
- Objective C学习笔记(五)
- 《Essential C++》笔记一、C++编程基础
- 【C++学习01】《Essential C++》第一章(Basic C++ Programming)笔记
- 【C++学习02】《Essential C++》第二章(Procedural Programming)笔记
- Essential C++学习笔记(一)
- ios UIVew 切换
- 超经典的文章:CE6内核启动过程
- C#中连接数据库的代码怎么写?
- 浅谈WinCE平台USB摄像头驱动开发流程
- 分页显示的两种实现方法
- Essential C++ 学习笔记(五)
- 模板方法模式(TemplateMethod Pattern)(一):模板方法模式介绍
- USB设备类型代码以及详细说明
- notepad++ 正则表达式 应用案例1
- WINCE6.0下配置BSP内存映射
- 2013 腾讯实习生招聘 武汉 一面
- 回车与换行
- 几个简单递归问题(菲波那契数列 ,二叉树,逆波兰式)
- 发现hao123首页有个bug【有图有真相】