//(I)C++面向对象开发
//complex class
1.带指针的class/不带指针的class
2.初始化列表/不使用初始化列表赋值 (头文件与类的声明
构造函数)
3.constructor放在private里(参数传递与返回值)
singleton
4.考虑return by value与return by reference
//string class
只要你的类里面带指针,必须有拷贝构造/拷贝赋值。
1.调试模式和release模式
//Object Oriented Programming, Object Oriented Design (OOP, OOD)
Inheritance 继承
Composition 复合
Delegation 委托
1.Composition(组合与继承)
Adapter
2.pimpl
pointer to implementation
3.Inheritance with virtual
template method
4.Delegation + Inheritance
Observer
Composite
5.Prototype
//(II)面向对象开发–兼谈对象模型
1.non-explicit-one-argument ctor
转换函数
关键字 explicit
2.pointer-like classes
share-pointer
iterator
3.function-like classes
仿函数
4.namespace
5.class template
6.function template
7.member template
8.specialization特化
9.模板偏特化
10.template template parameter
11.C++11新特性
12.reference
13.Object model
14.Vptr & Vtbl
虚函数 虚表
动态绑定:1通过指针调用 2向上转型 3调用的是虚函数
多态:
1 | A *p = new B; //A是父类 B是子类 |
15.const
1放在小括号后面大括号前面 修饰成员函数,不改变class的data
const也算函数签名的一部分
当成员函数的const和non-const版本同时存在的时候,const object只能只会调用const版本,non-const object只能只会调用non-const版本。
16.new & delete
new 先分配memory,再调用ctor
delete 先调用dtor,再释放memory
new和delete都是expression,调用的是operator new/operator delete,底层是调用malloc
17.重载operator new/operator delete/operator new【】/operator delete【】
18.placement new()
- Post link: https://github.com/TheBge/TheBge.github.io/2020/12/25/%E4%BE%AF%E6%8D%B7C++%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub IssuesGitHub Discussions