术语(Terminology)
声明式Declaration
告诉编译器某个东西的名称和类型,但略去细节。
对象(变量)声明不分配空间。(示例extern int x;
)
函数声明无实现。每个函数的声明揭示其签名式(signature)。
定义式(defination)
提供编译器一些声明式所遗漏的细节。
对象(变量)的定义式是编译器分配地址的地点。
函数的定义式提供了代码本体。
初始化(initialize)
初始化是给与对象初始值的过程。对于用户自定义类型的对象,初始化由构造函数执行。
构造函数和复制构造函数
类对象的构造函数可以声明为explicit
,这可以阻止它们被用来执行隐式类型转换,但它们仍可以给用来进行显式类型转换。
复制构造函数被用来“以同型对象初始化自身对象”。
复制构造函数定义了如何进行按值传递(passed by value)。(CRE:或者说对象赋值)
CRE:为什么需要复制构造函数而不是直接内存拷贝?因为涉及到深复制、外部资源、虚函数表等相关处理。
标准模板库(STL)
STL是所谓标准模板库(standard template library)。是一个C++标准程序库的一部分,致力于容器、迭代器、算法及相关机能。
未定义行为(Undefined Behaviour)
由于各种因素,某些C++构件的行为没有定义:你无法稳定预估运行期会发生什么事。
比如对null指针取值。
比如无效的数组索引。
未定义行为的后果不可预期,应该尽可能避开。
接口(inteface)
C++接口概念通常指的是函数的签名或者class的可访问元素。而不是Java、C#的接口。
(END)