这里总结一下C++学习4-9,加深印象以备后续学习。
1 三大部分
1.1 不带指针的类
C++学习4:详解不带指针的类(侯捷Complex类为例)
C++学习8:模板初步理解
1、基本知识:各种声明、类的定义、内联函数、访问级别、构造函数、重载、参数传递方式、返回方式、各种位置出现的const、友元、模板。
2、操作符重载:成员函数、非成员函数、全局函数。
3、设计类时一定要注意的细节:
(1)构造函数用没用初始列;
(2)函数要不要加const;
(3)参数的传递尽量考虑引用传递;
(4)return的应该用值还是引用;
(5)数据要放在private里,函数主要应放在public里。
1.2 带指针的类
C++学习5:详解带指针的类(侯捷String类为例)
C++学习6:堆栈及内存分配(侯捷Complex和String类为例)
C++学习7:static和this
1、只要类中带有指针,一定要自己写出拷贝构造和拷贝赋值操作!
2、Big Three:拷贝构造函数、拷贝赋值函数、析构函数。
3、相关知识:三种对象类型和生命期、堆栈、new和delete的底层含义,内存的分配方式。
4、补充知识:static对象和static函数的关系,static成员函数和this的关系。
(1)静态数据在类中声明过后要在外层定义
(2)静态成员函数中并没有this指针,用于处理静态数据
(3)静态成员函数的调用方法有两种:1.通过类名直接调用;2.通过该类对象调用。
1.3 类与类的关系
C++学习9:OOP——类和类之间的关系(复合、委托、继承)
1、复合(has a)、委托(Composition by reference)、继承(is a)。
2、以上三种关系的好处。
3、构造和析构的顺序。
2 一些设计模式
设计模式 | 用途 | 操作 |
---|---|---|
Singleton模式 | 创建一个类,希望它只产生一个对象 | 使用static,将ctor放在private中,通过类名调用静态函数取得这个对象 |
Adapter模式 | 一种类的功能可以完全满足另一种类需要的功能 | 使用复合,改变功能强大类的一些接口即可 |
Handle/Body模式 | 将接口与实现分隔开 | 使用委托,指针的指向的类是实现,拥有指针的类是接口 |
Template Method模式 | 固定一个算法的框架 | 使用继承,子类的virtual定义的方法执行子类的方法 |
Observer模式 | 某对象的状态改变时,对象之间仍能互相通信 | 定义观察者类作为委托,其子类继承观察者类 |
Composite模式 | 表示对象的部分-整体层次结构 | 将所有对象无论个体还是组合体,都继承同一个类,其中组合体通过容器委托成员类 |
Prototype模式 | 不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象 | 子类都创建一个自己,当成“原型”,让父类有办法去看到子类创造出的原型放在什么位置上 |