1.对象模型
C++对象模型可以概括为以下2部分:
1. 语言中直接支持面向对象程序设计的部分
2. 对于各种支持的底层实现机制
语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等。
在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,语言本身并没有支持“数据和函数”之间的关联性。在c++中,通过抽象数据类型(abstract data type,ADT),在类中定义数据和函数,来实现数据和函数直接的绑定。
概括来说,在C++类中有两种成员数据:static、nonstatic;三种成员函数:static、nonstatic、virtual。
2.智能指针(pointer-like class)
智能指针是新的标准库提供来管理动态对象的类型。智能指针的行为类似常规指针,但智能指针是负责自动释放所指向的对象。新的标准库提供来两种智能指针,shared_ptr和unique_ptr,这里先探讨前者。
shared_ptr允许多个指针指向同一个对象,智能指针也是模版,shared_ptr用法如下:
shared_ptr会自动销毁所管理的对象,还会自动释放相关联的内存。
3.类模版
类模版是用来生成类的蓝图的,与函数模版不同的是,编译器不能为类模版推断类模版的类型,定义一个类模版如下:
在类里面没有具体指定数据的类型,在使用中菜确定所用类型
4.函数模版
在定义一个比较大小的函数时,之前我们会根据不同的类型,定义多个功能相同的函数,比如有int类,double型,还有long,float型,利用模版函数,我们就不用那么麻烦,不用为每一个类型定义一个函数。一个模版就是一个公式,可用来生成针对特定类型的函数模版,
5.关于引用(reference)
reference的底层也是pointer,但惹reference与pointer不同的是,reference代表着一个数据之后,他就不能代表其他的数据,
x值改变,则r的值改变,r的值改变,那么x的值就改变,并且r和x的地址始终是相同的。
引用通常不用于声明变量,而用于参数类型和返回类型的描述。