2月20日
刚买书,明明是开源的,还要将近60元,
黑啊真是的!归入正题:
粗看了一下序言,大概地介绍吧,还有一堆推荐书的好话。真正让我兴奋的还在后面!看C++方式的改变!
第一章 对象导言(introduction不就是介绍吗?导个什么言!)
我所回忆的内容:(翻书补充)
1、 对象和类
抽象法来看问题,万物即为对象,而对象有性质,所以把对象用抽象的类,也就是共性来描述。
五大原则:
1、万物皆为对象(程序也如此,可细分为一组)
2、对象互相交流(函数调用请求)
3、对象互构(更复杂程序的可能性)
4、一切对象都有属性(类的可能)
5、一个类的所有对象都能接受同一个消息(OOP强大功能的可能)
模型: 类(抽象)——实例/对象(具体)
解决理论与实际结合的困难:接口 interface(函数)
模型:对象——接口
可以想见int的定义(内建的类)和class的定义目的是一致的(用户自定义的类)类即类型
C++实现:class
2、类的特点
封装:用类实现,避免复杂性的暴露和错误,隐私
模型:程序员(类创建者)——客户使用者(客户程序员)
C++实现:access specifer 访问说明符
public:公共接口(外部函数可以访问)
protected:保护接口(外部函数中继承类的可以访问)
pravite:内部接口 (内部函数可以访问)<保密性渐大>
继承 (为了重用)inheritance:把类进一步抽象
模 型:基类(类的类//我的用语)——派生类
(超类/父类) ——(继承类/子类)
两种继承方式:修改派生类的接口函数(纯继承 pure inherent) 函数重载 over-ridding
is-a
增加派生类的接口函数
is-like-a (基类无法调用派生类新函数)
另一种方式:聚合aggregation(组合 composition)不同类的对象组成新类(创建一个成员对象)
has-a 灵活性
多态性:继承类的个性
效率问题:(基于 is-a)
希望通过操作基类函数合法进行派生类实现
处理派生类型就像处理基本类型的过程(向上类型转化 upcasting)
从基类函数执行不同派生类被继承函数正确性的保证:
e.g 基类move()-> 派生类1.move()派生类 2.move()
其他语言:早捆绑 early binding
C++: 晚捆绑 late binding (编译器到函数执行还不知道具体类型及对象个数)
关键字 virtual (先有个印象)
3、对象的创建和销毁 (在后面进一步理解)
两种方式:堆stack 动态分配 速度慢 量大 虚拟内存 不关注细节 灵活性
栈heap 静态分配 速度快 量小 内存 关注细节(函数生命期)
C++ 的实现:动态分配
new 创建对象
delete 销毁对象
[方法论] (跳过)