DAY 1
重要概念
OOP(object-oriented programming):对象=数据+操作。万物都是对象,对象内部还是对象。对象与对象之间通过接口传递消息(操作函数),内部变量表示状态。封装/继承/多态
类(object)vs对象(object):物以类聚
头文件
注意定义definition与声明declaration的区别。
.h:仅包含声明
- 类、结构体的声明
- 函数原型声明
- extern variables 变量声明
"xxx.h"当前.cpp文件目录下寻找.h文件//<xxx.h>系统目录下寻找.h文件
.cpp:函数的body,定义
DAY 2
成员变量fields/本地变量local variables/参数变量parameters
类是抽象的概念,是表象。因此,类的声明只是告诉编译环境有这个class有这些成员,这些成员并没有被创建。只有当这个类的对象存在时,成员变量才真正存在。对象是实体的概念。
成员数据是属于每个创建的对象的。而,成员函数是属于class的,是公共的,每一个该class的对象,都可以使用成员函数进行操作。
this指针:当对象a调用类的函数时,为什么函数会对a的数据进行操作而不是其他对象的数据,是因为this指针。
学习C++,要积极思考这些原理如何用C语言实现。
构造函数constructor:创建对象的本质是调用构造函数,可以有参数
析构函数destructor:没有参数
访问限制
private:只有该类的函数可以访问。同一个类的不同对象之间,可以互相访问private属性成员。
protected:只有该类的子类可以访问。主函数不可以
DAY 3
初始化/组合与继承
在构造函数中,使用初始化列表initialized list去初始化类的成员,而不采用赋值的形式。
软件重用、代码重用:在C++中,除了继承可以实现,还有对象组合composition。
对象组合有两种形式,一是fully:该class的成员有别的class的对象;二是by reference,用指针的形式。
构造函数不能主动调用。在创建子类对象的时候,会创建一个父类的对象。换句话说,父类包含于子类,此时就要注意父类对象的初始化(构造函数带不带参数)。
- 当子类与父类定义了相同的函数时,且父类中这个函数有重载函数,此时子类的函数会替代父类的这个函数。