class template(类模板)
可以用来定义一组特定类型的类的类定义。类模板用template 关键字后接用尖括号(<>)括住、以逗号分隔的一个或多个形参的列表来定义。
export keyword(导出关键字)
用来指出编译器必须记住相关模板定义位置的关键字,支持模板实例化的分别编译模型的编译器使用它。export关键字一般与函数定义一起出现,类通常在相关类实现文件中声明为export。在一个程序中,一个模板只能用export 关键字定义一次。
function template(函数模板)
可用于不同类型的函数的定义。函数模板用template 关键字后接用尖括号(<>)括住、以逗号分隔的一个或多个形参的列表来定义。
generic handle class(泛型句柄类)
保存和管理指向其他类的指针的类。泛型句柄接受单个类型形参,并且分配和管理指向该类型对象的指针。句柄类定义了必要的复制控制成员,它还定义了解引用操作符(*)和箭头成员访问操作符(->)。泛型句不需要了解它管理的类型。
inclusion compilationmodel(包含编译模型)
编译器用来寻找模板定义的机制,它依赖于模板定义被包含在每个使用模板的文件中。一般而言,模板定义存储在一个头文件中,使用模板的任意文件必须包含该文件。
instantiation(实例化)
用实际模板实参产生模板特定实例的编译器过程,在该实例中,用对应实参代替形参。函数基于调用中使用的实参自动实例化,使用类模板时必须显式提供模板实参。
abort
异常终止程序执行的库函数。通常,由terminate 调用abort,程序也可以直接调用abort。abort定义在头文件cstdlib 中。
auto_ptr
一个库类模板,提供对动态分配对象的异常安全的访问。不能将auto_ptr 对象绑定到数组或者变量指针,auto_ptr对象的复制和赋值是破坏性操作:将对象的所有权从右操作数转到左操作数。对auto_ptr 对象进行赋值删除左操作数中的对象,因此,不能将auto_ptrs 对象存储在容器中。
catch-all(捕获所有异常子句)
异常说明符为(...)的 catch 子句。这种子句能够捕获任意类型的异常,它通常用于捕获为进行局部清除而局部检测的异常。异常被重新抛出给程序的其他部分,以处理问题的基本原因。
catch clause(catch 子句)
程序中处理异常的部分,也称异常处理代码。catch子句由关键字catch 后接异常说明符和语句块构成。catch内部的代码完成的必要工作来处理由异常说明符定义的类型的异常。
constructor order(构造函数次序)
一般而言,应该按照类派生列表中指定的次序构造基类,派生类构造函数应该通过构造函数初始化列表显式初始化每个基类。构造函数初始化列表中指定基类的次序不影响构造基类的次序。在虚继承中,虚基类在任何其他基类之前构造,它们按照在派生类型的派生列表中(直接或间接地)出现在次序进行构造,只有最低层派生类型可以初始化虚基类,中间基类中出现的基类构造函数初始化列表被忽略。
destructor order(析构函数次序)
应该按照构造次序的逆序撤销派生类对象——首先撤销派生部分,然后,从最后一个基类开始,撤销类派生列表中指定的类。在多重继承层次中作为基类的类通常应该将它们的析构函数数定义为虚函数。
exception handler(异常处理代码)
catch 子句的另一个名称。
exception handling(异常处理)
管理运行时异常的语言级支持。代码中一个独立开发的部分可以检测并“引发”异常,由程序中另一个独立开发的部分“处理”该异常。也就是说,程序的错误检测部分抛出异常,错误处理部分在try 块的catch 子句中处理异常。
exception object(异常对象)
用于在异常的throw 和catch 方之间进行通信的对象。在抛出点创建该对象,该对象是被抛出表达式的副本。异常对象一直存在,直到该异常最后一个处理代码结束。异常对象的类型是被抛出表达式的类型。
exception safe(异常安全的)
用于描述在抛出异常时表现正确的程序的术语。
exceptionspecification(异常说明)
用于函数声明之上,指出函数抛出什么(如果有)异常类型。在用圆括号括住、以逗号分隔、跟在关键字throw 之后的列表中指定异常类型。空列表表示函数不抛出异常,没有异常说明的函数可以抛出任何异常。
exception specifier(异常说明符)
说明给定catch 子句将处理的异常的炻。异常说明符的行为形参表,由异常对象初始化它的单个形参。像参数传递一样,如果异常说明符是非引用类型,就将异常对象复制到catch 中。
file static(文件静态)
用关键字static 声明的局部于文件的名字。在C 语言和标准版本之前的C++ 中,文件中的静态声明用于声明只能在单个文件中使用的对象,C++不赞成文件静态,已经用未命名的命名空间代替它。
function try block(函数测试块)
是函数体的try 块。关键字try 出现在函数体的左花括号之前,以出现在函数体的右花括号之后的catch 子句作为结束。函数测试块最经常用于包围构造函数定义,以便捕获由构造函数初始化式抛出的异常。
global namespace(全局命名空间)
每个程序中保存所有全局定义的(隐式)命名空间。
multiple inheritance(多重继承)
类有多个直接基类的继承。派生类继承所有基类的成员,通过在类派生列表中指定多个基类而定义多个基类,每个基类需要一个单独的访问标号。
namespace(命名空间)
将一个库或其他程序集合定义的所有名字聚焦到单个作用域的机制。与 C++ 中其他作用域不同,命名空间作用域可以在几个部分中定义,在程序的不同部分,命名空间可以是打开的、关闭的和重新打开的。
namespace alias(命名空间别名)
为给定命名空间定义同义词的机制。
namespace N1 = N;
将N1 定义为名为N 的命名空间的另一名字。一个命名空间可以有多个别名,并且命名空间名字和它的别名可以互换使用。
namespace pollution(命名空间污染)
用来描述类和函数的所有名字放在全局命名空间时发生什么情况的术语。如果名字是全局的,则使用由多个独立团队编写的代码的大程序经常遇到名字冲突。
raise(引发)
经常用作抛出的同义词。C++程序员互换地使用“抛出”异常或“引发”异常。
rethrow(重新抛出)
一个空的throw——没有指定throw。只有捕获子句或者从catch 直接或间接调用的函数中的重新抛出才有效,其效果是将接到的异常对象重新抛出。
scope operator(作用域操作符)
用于访问命名空间或类中名字的操作符。
stack unwinding(栈展开)
用于描述在查找catch 时退出引起被抛出异常的函数的过程。在进入相应catch 之前,撤销在异常之前构造的局部对象。
terminate
一个库函数。如果没有捕获到异常或者在异常处理过程中发生异常,就调用这个库函数。该函数通常调用abort 函数来结束程序。
throw e
中断当前执行路径的表达式。每个throw 将控制转到可以处理被抛出异常类型的最近的外围 catch 子句,表达式e 被复制到异常对象。
try block(测试块)
由关键字try 以及一个或多个try 子句包围的语句块。如果try 块内部的代码引发一个异常,而一个catch 子句与异常的类型匹配,则由该 catch 处理异常;否则,将异常传出try 之外,传给调用链中更上层的 catch。
unexpected
一个库函数,如果被抛出异常违反函数的异常说明,就调用该函数。
unnamed namespace(未命名的命名空间)
没有定义名字的命名空间。未命名的命名空间中定义的名字可以无须使用作用域操作符而直接访问。每个文件都具有自己的未命名的命名空间,文件中的名字在该文件之外不可见。
using declaration(using 声明)
将命名空间中单个名字注入当前作用域的机制。
using std::cout;
使得命名空间std 中的名字cout 在当前作用域中可见,可以无须限定符std:: 而使用名字cout。
using directive(using 指示)
使一个命名空间中的所有名字在using 指示和命名空间本身的最近作用域中可见的机制。
virtual base class(虚基类)
使用关键字virtual 继承的基类。即使同一类在层次中作为虚基类出现多次,派生类对象中的虚基类部分也只出现一次。在非虚继承中,构造函数只能初始化自己的直接基类,当对一个类进行虚继承的时候,由最低层的派生类初始化那个类,因此最低层的派生类应包含用于其所有虚父类的初始化式。
virtual inheritance(虚继承)
多重继承的形式,这种形式中,派生类共享在层次中被包含多次的基类的一个副本。
C++中出现的计算机术语5