C++ 术语

术语  
argument(实参)   
       传递给被调用函数的值。  


block(块)   
       花括号括起来的语句序列。  


buffer(缓冲区)   
       一段用来存放数据的存储区域。IO 设备常存储输入(或输出)到缓冲区, 
       并独立于程序动作对缓冲区进行读写。输出缓冲区通常必须显式刷新以强 
       制输出缓冲区内容。默认情况下,读 cin 会刷新 cout;当程序正常结束 
       时,cout 也被刷新。 
 
built-in type(内置类型)   
       C++ 语言本身定义的类型,如 int。  


cerr   
       绑定到标准错误的 ostream 对象,这通常是与标准输出相同的流。默认 
       情况下,输出 cerr 不缓冲,通常用于不是程序正常逻辑部分的错误信息 
       或其他输出。  


cin   
       用于从标准输入中读入的 istream 对象。  


class   
       用于自定义数据结构的 C++ 机制。类是 C++ 中最基本的特征。标准库类 
       型,如 istream 和 ostream,都是类。  


class type   
       由类所定义的类型,类型名就是类名。  


clog   
       绑定到标准错误的 ostream 对象。默认情况下,写到 clog 时是带缓冲 
       的。通常用于将程序执行信息写入到日志文件中。  


comments(注释)   
       编译器会忽略的程序文本。C++ 有单行注释和成对注释两种类型的注释。 
       单行注释以 // 开头,从 // 到行的结尾是一条注释。成对注释以 /* 开 
       始包括到下一个 */ 为止的所有文本。  


condition(条件)   
       求值为真或假的表达式。值为 0 的算术表达式是假,其他所有非 0 值都 
       是真。  


cout   
       用于写入到标准输出的 ostream 对象,一般情况下用于程序的输出。  


curly brace(花括号)   


       花括号对语句块定界。左花括号“{”开始一个块,右花括号“}”结束块。 


data structure(数据结构)   
       数据及数据上操作的逻辑组合。  


edit-compile-debug(编辑—编译—调试)   
       使得程序正确执行的过程。  


end-of-file(文件结束符)   
       文件中与特定系统有关的标记,表示这个文件中不再有其他输入。  


expression(表达式)   
       最小的计算单元。表达式包含一个或多个操作数并经常含有一个操作符。 
       表达式被求值并产生一个结果。例如,假定 i 和 j 都为 int 型,则 i +  
       j 是一个算术加法表达式并求这两个 int 值的和。表达式将在第五章详 
       细介绍。  


for statement(for 语句)   
       提供迭代执行的控制语句,通常用于步进遍历数据结构或对一个计算重复 
       固定次数。  


function(函数)   
       有名字的计算单元。  


function body(函数体)   
       定义函数所执行的动作的语句块。  


function name(函数名)   
       函数的名字标识,函数通过函数名调用。  


header(头文件)   
       使得类或其他名字的定义在多个程序中可用的一种机制。程序中通过  
       #include 指示包含头文件。  


if statement(if 语句)   
       根据指定条件的值执行的语句。如果条件为真,则执行 if 语句体;否则 
       控制流执行 else 后面的语句,如果没有 else 将执行 if 后面的语句。  


                                       
iostream(输入输出流)   
       提供面向流的输入和输出的标准库类型。  


istream(输入流)   
       提供面向流的输入的标准库类型。  


library type(标准库类型)   
       标准库所定义的类型,如 istream。  


main function(主函数)   
       执行 C++ 程序时,操作系统调用的函数。每一个程序有且仅有一个主函 
       数 main。  


manipulator(操纵符)   
       在读或写时“操纵”流本身的对象,如 std::endl。A.3.1 节详细讲述操 
       纵符。  


member function(成员函数)   
       类定义的操作。成员函数通常在特定的对象上进行操作。  


method(方法)   
       成员函数的同义词。  


namespace(命名空间)   
       将库所定义的名字放至单独一个地方的机制。命名空间有助于避免无意的 
       命名冲突。C++ 标准库所定义的名字在命名空间 std 中。  


ostream(输出流)   
       提供面向流的输出的库类型。  


parameter list(形参表)   
       函数定义的组成部分。指明可以用什么参数来调用函数,可能为空。  


preprocessor directive(预处理指示)                                       
       C++ 预处理器的指示。#include 是一个预处理器指示。预处理器指示必 
       须出现在单独的行中。第 2.9.2 节将对预处理器作详细的介绍。  


return type(返回类型)   
       函数返回值的类型。  


source file(源文件)   
       用来描述包含在 C++ 程序中的文件的术语。  


standard error(标准错误)   
       用于错误报告的输出流。通常,在视窗操作系统中,将标准输出和标准错 
       误绑定到程序的执行窗口。  


standard input(标准输入)   
       和程序执行窗口相关联的输入流,通常这种关联由操作系统设定。  


standard library(标准库)   
       每个 C++ 编译器必须支持的类型和函数的集合。标准库提供了强大的功 
       能,包括支持 IO 的类型。C++ 程序员谈到的“标准库”,是指整个标准 
       库,当提到某个标准库类型时也指标准库中某个特定的部分。例如,程序 
       员提到的“iostream 库”,专指标准库中由 iostream 类定义的那部分。  


standard output(标准输出)   
       和程序执行窗口相关联的输出流,通常这种关联由操作系统设定。  


statement(语句)   
       C++ 程序中最小的独立单元,类似于自然语言中的句子。C++ 中的语句一 
       般以分号结束。  


std   
       标准库命名空间的名字,std::cout 表明正在使用定义在 std 命名空间 
       中的名字 cout。  


string literal(字符串字面值)   
       以双引号括起来的字符序列。  


uninitialized variable(未初始化变量)   
        没有指定初始值的变量。类类型没有未初始化变量。没        有指定初始值的类 类型变量由类定义初始化。在使用变量值之前必须给未初始化的变量赋 
        值。未初始化变量是造成bug的主要原因之一。  


variable(变量)   
       有名字的对象。  


while statement(while 语句)   
       一种迭代控制语句,只要指定的条件为真就执行 while 循环体。while 循 
       环体执行0次还是多次,依赖于条件的真值。  


() operator[()操作符]   
       调用操作符。跟在函数名后且成对出现的圆括号。该操作符导致函数被调 
       用,给函数的实参可在括号里传递。  


++ operator(++操作符)   
       自增操作符。将操作数加 1,++i 等价于 i = i + 1。  


+= operator(+= 操作符)   
       复合赋值操作符,将右操作数和左操作数相加,并将结果存储到左操作数 
       中;a += b等价于 a = a + b。  


. operator(. 操作符)   
       点操作符。接受两个操作数:左操作数是一个对象,而右边是该对象的一 
       个成员的名字。这个操作符从指定对象中取得成员。  


:: operator(:: 操作符)   
       作用域操作符。在第二章中,我们将看到更多关于作用域的介绍。在其 
       他的使用过程中,:: 操作符用于在命名空间中访问名字。例如,std::cout  
       表示使用命名空间 std 中的名字 cout。  


= operator(= 操作符)   
       表示把右操作数的值赋给左操作数表示的对象。  


<< operator(<< 操作符)                                   
       输出操作符。把右操作数写到左操作数指定的输出流:cout << "hi" 把 hi  
       写入到标准输出流。输出操作可以链接在一起使用:cout << "hi << "bye"  
       输出 hibye。  


>> operator(>> 操作符)   
       输入操作符。从左操作数指定的输入流读入数据到右操作数:cin >> i 把 
       标准输入流中的下一个值读入到 i 中。输入操作能够链接在一起使用: 
       cin >> i >> j 先读入 i 然后再读入 j。  


== operator(==操作符)   
       等于操作符,测试左右两边的操作数是否相等。  


!= operator(!=操作符)   
       不等于操作符。测试左右两边的操作数是否不等。  


<= operator(<= 操作符)   
       小于或等于操作符。测试左操作数是否小于或等于右操作数。  


< operator(< 操作符)   
       小于操作符。测试左操作数是否小于右操作数。  


>= operator(>= 操作符)   
       大于或等于操作符。测试左操作数是否大于或等于右操作数。  


> operator(> 操作符)   
       大于操作符。测试左操作数是否大于右操作数。  


                                     
术语  


access labels(访问标号)   
       类的成员可以定义为 private,这能够防止使用该类型的代码访问该成 
       员。成员还可以定义为 public,这将使该整个程序中都可访问成员。  


address(地址)   
       一个数字,通过该数字可在存储器上找到一个字节。  


arithmetic types(算术类型)   
       表示数值即整数和浮点数的类型。浮点型值有三种类型:long double 、 
       double 和 float,分别表示扩展精度值、双精度值和单精度值。一般总 
       是使用 double 型。特别地,float 只能保证六位有效数字,这对于大多 
       数的计算来说都不够。整型包括 bool、char、wchar_t、short 、int 和  
       long 。整型可以是带符号或无符号的。一般在算术计算中总是避免使用  
       short 和 char。 unsigned 可用于计数。bool 类型只有 true 和 false  
       两个值。wchar_t 类型用于扩展字符集的字符;char 类型用于适合 8 个 
       位的字符,比如 Latin-1 或者 ASCII。  


array(数组)   
       存储一组可通过下标访问的未命名对象的数据结构。本章介绍了存储字符 
       串字面值的字符数组。第四章将会更加详细地介绍数组。  


byte(字节)   
       最小的可寻址存储单元。大多数的机器上一个字节有 8 个位(bit)。  


class(类)   
       C++ 中定义数据类型的机制。类可以用 class 或 struct 关键字定义。 
       类可以有数据和函数成员。成员可以是 public 或 private。一般来说, 
       定义该类型的操作的函数成员设为 public ;用于实现该类的数据成员和 
       函数设为 private。默认情况下,用 class 关键字定义的类其成员为  
       private ,而用 struct 关键字定义的类其成员为 public。  


class member(类成员)   
       类的一部分,可以是数据或操作。  


compound type(复合类型)   
       用其他类型定义的类型,如引用。第四章将介绍另外两种复合类型:指针 
       和数组。  


const reference(const 引用)   
       可以绑定到 const 对象、非 const 对象或右值的引用。const 引用不能 
       改变与其相关联的对象。  


constant expression(常量表达式)   
       值可以在编译时计算出来的整型表达式。  


constructor(构造函数)   
       用来初始化新建对象的特殊成员函数。构造函数的任务是保证对象的数据 
       成员拥有可靠且合理的初始值。  


copy-initialization(复制初始化)   
       一种初始化形式,用“=”表明变量应初始化为初始化式的副本。  


data member(数据成员)   
       组成对象的数据元素。数据成员一般应设为私有的。  


declaration(声明)   
       表明在程序中其他地方定义的变量、函数或类型的存在性。有些声明也是 
       定义。只有定义才为变量分配存储空间。可以通过在类型前添加关键字  
       extern 来声明变量。名字直到定义或声明后才能使用。  


default constructor(默认构造函数)    
       在没有为类类型对象的初始化式提供显式值时所使用的构造函数。例如, 
       string 类的默认构造函数将新建的 string 对象初始化为空 string,而 
       其他构造函数都是在创建 string 对象时用指定的字符去初始化 string  
       对象。  


definition(定义)   
       为指定类型的变量分配存储空间,也可能可选地初始化该变量。名字直到 
       定义或声明后才能使用。  


direct-initialization(直接初始化)   
       一种初始化形式,将逗号分隔的初始化式列表放在圆括号内。  


enumeration(枚举)   
       将一些命名整型常量聚成组的一种类型。  


enumerator(枚举成员)   
       枚举类型的有名字的成员。每个枚举成员都初始化为整型值且值为  
       const。枚举成员可用在需要整型常量表达式的地方,比如数组定义的维 
       度。  


escape sequence(转义字符)   
       一种表示字符的可选机制。通常用于表示不可打印字符如换行符或制表 
       符。转义字符是反斜线后面跟着一个字符、一个 3 位八进制数或一个十 
       六进制的数。C++ 语言定义的转义字符列在第 2.2 节。转义字符还可用 
       作字符字面值(括在单引号里)或用作字符串字面值的一部分(括在双引 
       号里)。  


global scope(全局作用域)   
       位于任何其他作用域外的作用域。  


header(头文件)   
       使得类的定义和其他声明在多个源文件中可见的一种机制。用户定义的头 
       文件以文件方式保存。系统头文件可能以文件方式保存,也可能以系统特 
       有的其他格式保存。  


header guard(头文件保护符)   
       为防止头文件被同一源文件多次包含而定义的预处理器变量。  


                                      107 
identifier(标识符)   
       名字。每个标识符都是字母、数字和下划线的非空序列,且序列不能以数 
       字开头。标识符是大小写敏感的:大写字母和小写字母含义不同。标识符 
       不能使用C++中的关键字,不能包含相邻的下划线,也不能以下划线后跟 
       一个大写字母开始。  


implementation(实现)   
       定义数据和操作的类成员(通常为 private),这些数据和操作并非为使 
       用该类型的代码所用。例如,istream 和 ostream 类管理的 IO 缓冲区 
       是它们的实现的一部分,但并不允许这些类的使用者直接访问。  


initialized(已初始化的)   
       含有初始值的变量。当定义变量时,可指定初始值。变量通常要初始化。  


integral types(整型)   
       见 arithmetic type。  


interface(接口)   
       由某种类型支持的操作。设计良好的类分离了接口和实现,在类的 public  
       部分定义接口,private 部分定义实现。数据成员一般是实现的一部分。 
       当函数成员是期望该类型的使用者使用的操作时,函数成员就是接口的一 
       部分(因此为 public);当函数成员执行类所需要的、非一般性使用的 
       操作时,函数成员就是实现的一部分。  


link(链接)   
       一个编译步骤,此时多个目标文件放置在一起以形成可执行程序。链接步 
       骤解决了文件间的依赖,如将一个文件中的函数调用链接到另一个文件中 
       的函数定义。  


literal constant(字面值常量)   
       诸如数、字符或字符串的值,该值不能修改。字面值字符用单引号括住, 
       而字面值字符串则用双引号括住。  


local scope(局部作用域)   
       用于描述函数作用域和函数内嵌套的作用域的术语。  


lvalue(左值)   
       可以出现在赋值操作左边的值。非 const 左值可以读也可以写。  


magic number(魔数)   
       程序中意义重要但又不明显的字面值数字。它的出现好像变魔术一般。  


nonconst reference(非 const 引用)   
       只能绑定到与该引用同类型的非 const 左值的引用。非 const 引用可以 
       修改与其相关联的对象的值。  


nonprintable character(非打印字符)   
       不可见字符。如控制符、回退删除符、换行符等。  


object(对象)   
       具有类型的一段内存区域。变量就是一个有名字的对象。  


preprocessor(预处理器)   
       预处理器是作为 C++ 程序编译的一部分运行的程序。预处理器继承于 C  
       语言,C++ 的特征大量减少了它的使用,但仍保存了一个很重要的用法: 
       #include 设施,用来把头文件并入程序。  


private member(私有成员)   
       使用该类的代码不可访问的成员。  


public member(公用成员)    
      可被程序的任何部分使用的类成员。  


reference(引用)   
       对象的别名。定义如下:  
        type &id = object;  
       定义 id 为 object 的另一名字。任何对 id 的操作都会转变为对  
       object 的操作。  


run time(运行时)   
       指程序正执行的那段时间。  
 
rvalue(右值)   
       可用于赋值操作的右边但不能用于左边的值。右值只能读而不能写。  


scope(作用域)   
       程序的一部分,在其中名字有意义。C++ 含有下列几种作用域:  
              全局——名字定义在任何其他作用域外。  
              类——名字由类定义。  
              命名空间——名字在命名空间中定义。  
              局部——名字在函数内定义。  
              块——名字定义在语句块中,也就是说,定义在一对花括号里。  
              语句——名字在语句( 如if、while 和 for 语句)的条件内定 
              义。  
       作用域可嵌套。例如,在全局作用域中声明的名字在函数作用域和语句作 
       用域中都可以访问。  


separate compilation(分别编译)   
       将程序分成多个分离的源文件进行编译。  


signed(带符号型)   
       保存负数、正数或零的整型。  


statically typed(静态类型的)   
       描述进行编译时类型检查的语言(如 C++)的术语。C++ 在编译时验证表 
       达式使用的类型可以执行该表达式需要的操作。  


struct   
       用来定义类的关键字。除非有特殊的声明,默认情况下 struct 的成员都 
       为公用的。  


type-checking(类型检查)   
       编译器验证给定类型的对象的使用方式是否与该类型的定义一致,描述这 
       一过程的术语。  


                                       110 
type specifier(类型说明符)   
       定义或声明中命名其后变量的类型的部分。  


typedef   
       为某种类型引入同义词。格式:  
            typedef type synonym;           
       定义 synonym 为名为 type 的类型的另一名字。  


undefined behavior(未定义行为)   
       语言没有规定其意义的用法。编译器可以自由地做它想做的事。有意或无 
       意地依赖未定义行为将产生大量难于跟踪的运行时错误和可移值性问题。  


uninitialized(未初始化的)   
       没有指定初始值的变量。未初始化变量不是0也不是“空”,相反,它会 
       保存碰巧遗留在分配给它的内存里的任何位。未初始化变量会产生很多错 
       误。  


unsigned(无符号型)   
       保存大于等于零的值的整型。  


variable initialization(变量初始化)   
       描述当没有给出显式初始化式时初始化变量或数组元素的规则的术语。对 
       类类型来说,通过运行类的默认构造函数来初始化对象。如果没有默认构 
       造函数,那么将会出现编译时错误:必须要给对象指定显式的初始化式。 
       对于内置类型来说,初始化取决于作用域。定义在全局作用域的对象初始 
       化为 0,而定义在局部作用域的对象则未初始化,拥有未定义值。  


void type(空类型)   
       用于特殊目的的没有操作也没有值的类型。不可能定义一个 void 类型的 
       变量。最经常用作不返回结果的函数的返回类型。  


word(字)   
       机器上的自然的整型计算单元。通常一个字足以容纳一个地址。一般在 32  
       位的机器上,机器字长为 4 个字节。  




abstract data type(抽象数据类型)   
       隐藏其实现的数据类型。使用抽象数据类型时,只需要了解该类型所支持 
       的操作。  


bitset   
       一种标准库类型,用于保存位置,并提供地各个位的测试和置位操作。  


cctype header(cctype 头文件)   
       从 C 标准库继承而来的头文件,包含一组测试字符值的例程。第 8.3.4  
       节的表 3.3 列出了常用的例程。  


class template(类模板)   
       一个可创建许多潜在类类型的蓝图。使用类模板时,必须给出实际的类型 
       和值。例如,vector 类型是保存给定类型对象的模板。创建一个 vector  
       对象是,必须指出这个 vector 对象所保存的元素的类型。vector<int>  
       保存 int 的对象,而 vector<string> 则保存 string 对象,以此类推。  


container(容器)   
       一种类型,其对象保存一组给定类型的对象的集合。  


difference_type   
       一种由 vector 类型定义的 signed 整型,用于存储任意两个迭代器间的 
       距离。  


empty   
       由string类型和vector类型定义的成员函数。empty返回布尔值,用于 
       检测string是否有字符或vector是否有元素。如果string或vector 
       的size为0,则返回true,否则返回false。  


getline   
       string头文件中定义的函数,该函数接受一个istream对象和一个string 
       对象,读取输入流直到下一个换行符,存储读入的输入流到string对象 
       中,并返回istream对象。换行符被读入并丢弃。  


high-order(高阶)   
       bitset对象中索引值最大的位。  


index(索引)   
       下标操作符所使用的值,用于表示从string对象或vector对象中获取的 
       元素。也称“下标”。  


iterator(迭代器)   
       用于对容器类型的元素进行检查和遍历的数据类型。  


iterator arithmetic(迭代器的算术操作)   
       应用于一些(并非全部)迭代器类型的算术操作。迭代器对象可以加上或 
       减去一个整型数值,结果迭代器指向处于原迭代器之前或之后若干个元素 
       的位置。两个迭代器对象可以相减,得到的结果是它们之间的距离。迭代 
       器算术操作只适用于指向同一容器中的元素或指向容器末端的下一元素 
       迭代器。  


low-order(低阶)   
       bitset对象中索引值最小的位。  


off-the-end iterator(超出末端的迭代器)   
       由end操作返回的迭代器,是一种指向容器末端之后的不存在元素的迭代 
       器。  


push_back   
       由vector类型定义的成员函数,用于把元素追加到vector对象的尾部。  


sentinel(哨兵)   
       一种程序设计技术,使用一个值来控制处理过程。在本章中使用由end 
       操作返回的迭代器作为保护符,当处理完vector对象中的所有元素后, 
       用它来停止处理vector中的元素。  


size   
       由库类型string、vector和bitset定义的函数,分别用于返回此三个类 
       型的字符个数、元素个素、二进制位的个数。string和vector类的size 
       成员函数返回size_type类型的值(例如,string对象的size操作返回 
       string::size_type类型值)。bitset对象的size操作返回size_t类型 
       值。  


size_t   
       在cstddef头文件中定义的机器相关的无符号整型,该类型足以保存最大 
       数组的长度。  
       在cstddef头文件中定义的机器相关的无符号整型,该类型足以保存最大数组的 
       长度。   


size_type   
       由string类类型和vector类类型定义的类型,用以保存任意string对 
       象或vecotr对象的长度。标准库类型将size_type定义为unsigned类型。  


using declarations(using 声明)   
       使命名空间的名字可以直接引用。比如:  
       using namespace::name;  
       可以直接访问name而无须前缀namespace::。  


value initialization(值初始化)   
       当给定容器的长度,但没有显式提供元素的初始式时,对容器元素进行的 
       初始化。元素被初始化为一个编译器产生的值的副本。如果容器保存内置 
       类型变量,则元素的初始值将置为0。如果容器用于保存类对象,则元素 
       的初始值由类的默认构造函数产生。只有类提供了默认构造函数时,类类 
       型的容器元素才能进行值初始化。  


++ operator(++操作符)   
       迭代器类型定义的自增操作符,通过“加1”移动迭代器指向下一个元 
       素。  


:: operator(::操作符)   
       作用域操作符。::操作符在其左操作数的作用域内找到其右操作数的名 
       字。用于访问某个命名空间中的名字,如std::cout,表明名字cout来 
       自命名空间std。同样地,可用来从某个类取名字,如string::size_type, 
       表明size_type是由string类定义的。  


[] operator([]操作符)   
       由string, vector和bitset类型定义的重载操作符。它接受两个操作数: 
       左操作数是对象名字,右操作数是一个索引。该操作符用于取出位置与索 
       引相符的元素,索引计数从0开始,即第一个元素的索引为0,最后一个 
       元素的索引为obj.size() -1。下标操作返回左值,因此可将下标操作作 
       为赋值操作的左操作数。对下标操作的结果赋值是赋一个新值到相应的元 
       素。  


* operator(*操作符)   
       迭代器类型定义了解引用操作符来返回迭代器所指向的对象。解引用返回 
       左值,因此可将解引用操作符用作赋值操作的左操作数。对解引用操作的 
       结果赋值是赋一个新值到相应的元素。  


<< operator (<< 操作符)   
       标准库类型string和bitset定义了输出操作符。string类型的输出操 
       作符将输出string对象中的字符。bitset类型的输出操作符则输出 
       bitset对象的位模式。  


>> operator(>> 操作符)   
       标准库类型string和bitset定义了输入操作符。string类型的输入操 
       作符读入以空白字符为分隔符的字符串,并把读入的内容存储在右操作数 
       (string对象)中。bitset类型的输入操作符则读入一个位序列到其 
       bitset操作数中。  




C-style strings(C 风格字符串)   
       C 程序把指向以空字符结束的字符数组的指针视为字符串。在 C++ 中, 
       字符串字面值就是 C 风格字符串。C 标准库定义了一系列处理这种字符 
       串的库函数,C++ 中将这些标准库函数放在 cstring 头文件中。由于 C  
       风格字符串本质上容易出错,C++ 程序应该优先使用 C++ 标准库类  
       string 而少用 C 风格字符串。网络程序中大量的安全漏洞都源于与使用  
       C 风格字符串和数组相关的缺陷。  


compiler extension(编译器扩展)   
       特定编译器为语言添加的特性。依赖于编译器扩展的程序很难移植到其他 
       的编译器。  


compound type(复合类型)   
       使用其他类型定义的类型。数组、指针和引用都是复合类型。  


const void*   
       可以指向任意 const 类型的指针类型,参见 void *。  


delete expression(delete 表达式)   
       delete 表达式用于释放由 new 动态分配的内存:  
       delete [] p;  
       在此表达式中,p 必须是指向动态创建的数组中第一个元素的指针,其中 
       方括号必不可少:它告诉编译器该指针指向数组,而非单个对象。C++ 程 
       序使用 delete 取代 C 语言的标准库函数 free。  


dimension(维数)   
       数组大小。  


dynamically allocated(动态分配的)   
       在程序自由存储区中建立的对象。该对象一经创建就一直存在,直到显式 
       释放为止。  


free store(自由存储区)   
       程序用来存储动态创建对象的内存区域。  


heap(堆)   
       自由存储区的同义词。  


new expression(new 表达式)   
       用于分配动态内存的表达式。下面的语句分配了一个有 n 个元素的数组:  
        new type[n];  
       该数组存放 type 类型的元素。new 返回指向该数组第一个元素的指针。 
       C++ 程序使用 new 取代 C 语言的标准库函数 malloc。  


pointer(指针)   
       存放对象地址的对象。  


pointer arithmetic(指针算术操作)   
       可用于指针的算术操作。允许在指针上做加上或减去整型值的操作,以获 
       得当前指针之前或之后若干个元素处的地址。两个指针可做减法操作,得 
       到它们之间的差值。只有当指针指向同一个数组或其超出末端的位置时, 
       指针的算术操作才有意义。  


precedence(优先级)   
       在复杂的表达式中,优先级确定了操作数分组的次序。  


ptrdiff_t   
       在 cstddef 头文件中定义的与机器相关的有符号整型,该类型具有足够 
       的大小存储两个指针的差值,这两个指针指向同一个可能的最大数组。  


size_t   
       在 cstddef 头文件中定义的与机器相关的无符号整型,它具有足够的大 
       小存储一个可能的最大数组。  


* operator(* 操作符)   
       对指针进行解引用操作获得该指针所指向的对象。解引用操作符返回左 
       值,因此可为其结果赋值,等效于为该指针所指向的特定对象赋新值。  


++ operator(++ 操作符)   
       用于指针时,自增操作符给指针“加 1”,移动指针使其指向数组的下一 
       个元素。  


[] operator([] 操作符)   
       下标操作符接受两个操作数:一个是指向数组元素的指针,一个是下标 n。 
       该操作返回偏离指针当前指向 n 个位置的元素值。数组下标从 0 开始计 
       数——数组第一个元素的下标为 0,最后一个元素的下标是数组长度减  
       1。下标操作返回左值,可用做赋值操作的左操作数,等效于为该下标引 
       用的元素赋新值。  


                                    
& operator(& 操作符)   
       取地址操作符需要一个操作数,其唯一的操作数必须是左值对象,该操作 
       返回操作数对象在内存中的存储地址。  


void*   
       可以指向任何非 const 对象的指针类型。void* 指针只提供有限的几种 
       操作:可用作函数形参类型或返回类型,也可与其他指针做比较操作,但 
       是不能进行解引用操作。  






arithmetic conversion(算术转换)   
       算术类型之间的转换。在使用二元算术操作符的地方,算术转换通常将较 
       小的类型转换为较大的类型,以确保精度(例如,将小的整型 char 型和  
       short 型转换为 int 型)。  


associativity(结合性)   
       决定同一优先级的操作符如何结合。C++ 的操作符要么是左结合(操作符 
       从左向右结合)要么是右结合(操作符从右向左结合)。  


binary operators(二元操作符)   
       有两个操作数的操作符。  


cast(强制类型转换)   
       显式的类型转换。  


compound expression(复合表达式)   
       含有多个操作符的表达式。  


const_cast   
       将 const 对象转换为相应的非 const 类型的强制转换。  


conversion(类型转换)   
       将某种类型的值转换为另一种类型值的处理方式。C++ 语言定义了内置类 
       型之间的类型转换,也允许将某种类型转换为类类型或将类类型转换为某 
       种类型。  


dangling pointer(悬垂指针)   
       指向曾经存在的对象的指针,但该对象已经不再存在了。悬垂指针容易导 
       致程序错误,而且这种错误很难检测出来。  


delete expression(delete 表达式)   
       delete 表达式用于释放由 new 动态分配的内存。delete 有两种语法形 
       式:  
        delete p;      // delete object  
        delete [] p;    // delete array  
       第一种形式的 p 必须是指向动态创建对象的指针;第二种形式的 p 则应 
       指向动态创建数组的第一个元素。C++ 程序使用 delete 取代 C 语言的 
       标准库函数 free。  


dynamic_cast   
       用于结合继承和运行时类型识别。参见第 18.2 节。  


expression(表达式)   
       C++程序中的最低级的计算。表达式通常将一个操作符用于一个或多个操 
       作数。每个表达式产生一个结果。表达式也可用作操作数,因此可用多个 
       操作符编写复合表达式。  


implicit conversion(隐式类型转换)   
       编译器自动实现的类型转换。假设表达式需要某种特定类型的数值,但其 
       操作数却是其他不同的类型,此时如果系统定义了适当的类型转换,编译 
       器会自动根据转换规则将该操作数转换为需要的类型。  


integral promotions(整型提升)   
       整型提升是标准类型转换规则的子集,它将较小的整型转换为最接近的较 
       大数据类型。整型(如 short、char 等)被提升为 int 型或 unsigned int  
       型。  


new expression(new 表达式)   
       new 表达式用于运行时从自由存储区中分配内存空间。本章使用 new 创 
       建单个对象,其语法形式为:  
       new type;  
       new type(inits);  
       new 表达式创建指定 type 类型的对象,并且可选择在创建时使用 inits  
       初值初始化该对象,然后返回指向该对象的指针。C++ 程序使用 new 取 
       代 C 语言的标准库函数 malloc。  


operands(操作数)   
       表达式操纵的值。  


operator(操作符)   
       决定表达式执行什么功能的符号。C++ 语言定义了一组操作符以及将它们 
       用于内置类型时的含义,还定义了每个操作符的优先级和结合性以及它们 
       所需要的操作数个数。C++ 语言允许重载操作符,以使它们能用于类类型 
       的对象。  


operator overloading(操作符重载)   
       对操作符的功能重定义以用于类类型。我们将在第十四章中学习如何重载 
       不同的操作符版本。  


order of evaluation(求值顺序)   
       操作符的操作数计算顺序(如果有的话)。大多数情况下,C++ 编译器可 
       自由选择操作数求解的次序。  


precedence(优先级)   
       定义了复合表达式中不同操作符的结合方式。高优先级的操作符要比低优 
       先级操作符结合得更紧密。  


reinterpret_cast   
       将操作数内容解释为另一种不同的类型。这类强制转换本质上依赖于机 
       器,而且是非常危险的。  


result(结果)   
       计算表达式所获得的值或对象。  


static_cast   
       编译器隐式执行的任何类型转换都可以由 static_cast 显式完成。我们 
       常常使用 static_cast 取代由编译器实现的隐式转换。  


                                   
unary operators(一元操作符)   
       只有一个操作数的操作符。  


~ operator    
      逐位求反操作符,将其操作数的每个位都取反。  


, operator   
       逗号操作符。用逗号隔开的表达式从左向右计算,整个逗号表达式的结果 
       为其最右边的表达式的值。  


^ operator   
       位异或操作符。在做位异或操作时,如果两个操作数对应位置上的位只有 
       一个(注意不是两个)为 1,则操作结果中该位为 1,否则为 0,位异或 
       操作产生一个新的整数值。  


| operator   
       位或操作符。在做位或操作时,如果两个操作数对应位置上的位至少有一 
       个为 1,则操作结果中该位为 1,否则为 0,位或操作产生一个新的整数 
       值。  


++ operator   
       自增操作符。自增操作符有两种形式:前置操作和后置操作。前自增操作 
       生成左值,在给操作数加1后返回改变后的操作数值。后自增操作生成右 
       值,给操作数加1但返回未改变的操作数原值。  


-- operator   
       自减操作符。自减操作符也有两种形式:前置操作和后置操作。前自减操 
       作生成左值,在给操作数减1后返回改变后的操作数值。后自减操作生成 
       右值,给操作数减1但返回未改变的操作数原值。  


<< operator   
       左移操作符。左移操作符将其左操作数的各个位向左移动若干个位,移动 
       的位数由其右操作数指定。左移操作符的右操作数必须是0值或正整数, 
       而且它的值必须严格小于左操作数的位数。  


>> operator   
       右移操作符。与左移操作符类似,右移操作符将其左操作数的各个位向右 
       移动,其右操作数必须是0值或正整数,而且它的值必须严格小于左操作 
       数的位数。   


assert   
       一种预处理宏,使用单个表达式作为断言条件。如果预处理变量 NDEBUG  
       没有定义,则 assert 将求解它的条件表达式。若条件为 false,assert  
       输出信息并终止程序的执行。  


block(块)   
       包含在一对花括号里的语句序列。在语法上,块就是单语句,可出现在任 
       何单语句可以出现的地方。  


break statement(break 语句)   
       一种语句,能够终止最近的循环或者 switch 语句的执行,将控制权交给 
       被终止的循环或者 switch 后的第一条语句。  


case label(case 标号)   
       switch 语句中跟在关键字 case 后的整型常量值。在同一个 switch 结 
       构中不能有任何两个标号拥有相同的常量值。如果 switch 条件表达式的 
       值与其中某个标号的值相等,则控制权转移到匹配标号后面的第一条语 
       句,从这种语句开始依次继续各个语句,直到遇到 break 或者到达  
       switch 结尾为止。  


catch clause(catch 子句)   
       一种语句,包括关键字 catch、圆括号内的异常说明符以及一个块语句。 
       catch 子句中的代码实现某种异常的处理,该异常的处理,该异常由圆括 
       号内的异常说明符定义。  


compound statement(复合语句)   
       块的同义词。  


continue statement(continue 语句)   
       一种语句,能够结束最近的循环结构的当次循环迭代,将控制流转移到  
       while 或 do 的循环条件表达式,或者 for 语句头中第三个表达式。  


dangling else(悬垂 else)   
       一个通俗术语,指出如何处理嵌套 if 语句中 if 多于 else 时发生的二 
       义性问题。C++ 中,else 总是与最近的未匹配的 if 配对。注意使用花 
       括号能有效地隐藏内层 if,使程序员可以控制给定的 else 与哪个 if  
       相匹配。  


declaration statement(声明语句)   
       定义或者声明变量的语句。声明已在第二章中介绍。  


default label(default 标号)   
       switch 语句中的一种标号,当计算 switch 条件所得的值与所有 case  
       标号的值都不匹配时,则执行 default 标号关联的语句。  


exception classes(异常类)   
       标准库定义的一组描述程序错误的类。表 6.1 列出了常见的异常。  


exception handler(异常处理代码)   
       一段代码,用于处理程序某个部分引起的异常。是 catch 子句的同义词。  


exception specifier(异常说明符)   
       对象或类型的声明,用于指出当前的 catch 能处理的异常类型。  


expression statement(表达式语句)   
       一种语句,由后接分号的表达式构成。表达式语句用于表达式的求解。  


flow of control(控制流)   
       程序的执行路径。  


goto statement(goto 语句)   
       一种语句,能够使程序控制流程无条件跳转到指定标号语句。goto 扰乱 
       了程序内部的控制流,应尽可能避免使用。  


                                     
if else statement(if else 语句)   
       一种语句,有条件地执行 if 或 else 后的代码,如何执行取决于条件表 
       达式的真值。  


if statement(if 语句)   
       基于指定条件值的条件分支语句。如果条件为真,则执行 if 语句体;否 
       则,控制流转到 if 后面的语句。  


labeled statement(带标号的语句)   
       以标号开头的语句。标号是后面带一个冒号的标识符。  


null statement(空语句)   
       空白的语句。其语法形式为单个分号。  


preprocessor macro(预处理宏)   
       与预处理器定义的设施相似的函数。assert 是一个宏。现代 C++ 程序很 
       少使用预处理宏。  


raise(引发)   
       常用作 throw 的同义词。C++ 程序员所说的“抛出(throwing)”或者 
        “引发(raising)”异常表示一样的含义。  


switch statement(switch 语句)   
       从计算关键字 switch 后面的表达式开始执行的条件分支语句。程序的控 
       制流转跳到与表达式值匹配的 case 标号所标记的标号语句。如果没有匹 
       配的标号,则执行 default 标号标记的分支,如果没有提供 default 分 
       支则结束 switch 语句的执行。  


terminate   
       异常未被捕获时调用的标准库函数。通常会终止程序的执行。  


throw expression(throw 表达式)   
       中断当前执行路径的表达式。每个 throw 都会抛出一个对象,并将控制 
       转换到最近的可处理该类型异常的 catch 子句。  


try block(try 块)   
       跟在关键字 try 后面的块,以及一个或多个 catch 子句。如果 try 块 
       中的代码产生了异常,而且该异常类型与其中某个 catch 子句匹配,则 
       执行这个 catch 子句的语句处理这个异常。否则,异常将由外围 try 块 
       处理,或者终止程序。  


while loop(while 循环)   
       当指定条件为 true 时,执行目标代码的控制语句。根据条件的真值,目 
       标代码可能执行零次或多次。  


                                   
base class(基类)   
       是其他类的父类。基类定义了派生类所继承的接口。  


condition state(条件状态)   
       流类用于指示给定的流是否用的标志以及相关函数。表 8.2 列出了流的 
       状态以及获取和设置这些状态的函数。  


derived class(派生类)   
       与父类共享接口的类。  


file mode(文件模式)   
       由 fstream 类定义的标志,在打开文件和控制文件如何使用时指定。表  
       8.3 列出了所有的文件模式。  


fstream   
       用来读或写已命名文件的流对象。除了普通的 iostream 操作外,fstream  
       类还定义了 open 和 close 成员。open 成员函数有一个表示打开文件名 
       的 C 风格字符串参数和一个可选的打开模式参数。默认时,ifstream 对 
       象以 in 模式打开,ofstream 对象以 out 模式打开,而 fstream 对象 
       则同时以 in 和 out 模式打开。close 成员关闭流关联的文件,必须在 
       打开另一个文件前调用。  


inheritance(继承)   
       有继承关系的类型共享相同的接口。派生类继承其基类的属性。第十五章 
       将继承。  


object-oriented library(面向对象标准库)   
       有继承关系的类的集合。一般来说,面向对象标准库的基类定义了接口, 
       由继承这个  基类的各个派生类共享。在 IO 标准库中,istream 和  
       ostream 类是 fstream 和 sstream 头文件中定义的类型的基类。派生类 
       的对象可当做基类对象使用。例如,可在 ifstream 对象上使用 istream  
       定义的操作。  


stringstream   
       读写字符串的流对象。除了普通的 iostream 操作外,它还定义了名为  
       str 的重载成员。无实参地调用 str 将返回 stringstream 所关联的  
       string 值。用 string 对象做实参调用它则将该 stringstream 对象与 
       实参副本相关联。  




adaptor(适配器)   
       一种标准库类型、函数或迭代器,使某种标准库类型、函数或迭代器的行 
       为类似于另外一种标准库类型、函数或迭代器。系统提供了三种顺序容器 
       适配器:stack(栈)、queue(队列)以及 priority_queue(优先级队 
       列)。所有的适配器都会在其基础顺序容器上定义一个新接口。  


begin(begin 操作)   
       一种容器操作。如果容器中有元素,该操作返回指向容器中第一个元素的 
       迭代器;如果容器为空,则返回超出末端迭代器。  


container(容器)   
       一种存储给定类型对象集合的类型。所有标准库容器类型都是模板类型。 
       定义容器时,必须指定在该容器中存储的元素是什么类型。标准库容器具 
       有可变的长度。  


deque(双端队列)   
       一种顺序容器。deque 中存储的元素通过其下标位置访问。该容器类型在 
       很多方面与 vector 一样,唯一的不同是 deque 类型支持在容器首部快 
       速地插入新元素,就像在尾部插入一样,而且无论在容器的哪一端插入或 
       删除都不会引起元素的重新定位。  


end(end 操作)   
       一种容器操作,返回指向容器的超出末端的下一位置的迭代器。  


invalidated iterator(无效迭代器)   
       指向不再存在的元素的迭代器。无效迭代器的使用未定义,可能会导致严 
       重的运行时错误。  


iterator(迭代器)   
       一种类型,其操作支持遍历和检查容器元素的操作。所有标准库容器都定 
       义了表 9.5 列出的 4 种迭代器,与之共同工作。标准库迭代器都支持 
       解引用(*)操作符和箭头(->)操作符,用于检查迭代器指向的元素值。 
       它们还支持前置和后置的自增(++)、自减操作符(--),以及相等(  ) 
       和不等(!=)操作符。  


iterator range(迭代器范围)   
       由一对迭代器标记的一段元素范围。第一个迭代器指向序列中的第一个元 
       素,而第二个迭代器则指向该范围中的最后一个元素的下一位置。如果这 
       段范围为空,则这两个迭代器相等(反之亦然——如果这两个迭代器相等, 
       则它们标记一个空范围)。如果这段范围非空,则对第一个空范围)。如 
       果这段范围非空,则对第一个迭代器重复做自增运算,必然能达第二个迭 
       代器。通过这个对迭代器进行自增的过程,即可处理该序列中所有的元素。  


left-inclusive interval(左闭合区间)   
       一段包含第一个元素但不包含最后一个元素的范围。一般表示为 [i, j), 
       意味着该序列从 i 开始(包括 i)一直到 j,但不包含 j。  


list(列表)   
       一种顺序容器。list 中的元素只能顺序访问——从给定元素开始,要获 
       取另一个元素,则必须通过自增或自减迭代器的操作遍历这两个元素之间 
       的所有元素。list 容器支持在容器的任何位置实现快速插入(或删除) 
       运算。新元素的插入不会影响 list 中的其他元素。插入元素时,迭代器 
       保持有效;删除元素时,只有指向该元素的迭代器失效。  


priority_queue(优先级队列)   
       一种顺序容器适配器。在这种队列中,新元素不是在队列尾部插入,而是 
       根据指定的优先级级别插入。默认情况下,元素的优先级由元素类型的小 
       于操作符决定。  


queue(队列)   
       一种顺序容器适配器。在这种队列中,保证只在队尾插入新元素,而且只 
       在队首删除元素。  


sequential container(顺序容器)   
       以有序集合的方式存储单一类型对象的类型。顺序容器中的元素可通过下 
       标访问。  


stack(栈)   
       一种顺序容器适配器,这种类型只能在一端插入和删除元素。  


vector(向量)   
       一种顺序容器。vector 中的元素通过其位置下标访问。可通过调用  
       push_back 或 insert 函数在 vector 中添加元素。在 vector 中添加元 
       素可能会导致重新为容器分配内存空间,也可能会使所有的迭代器失效。 
       在 vector 容器中间添加(或删除)元素将使所有指向插入(或删除)点 
       后面的元素的迭代器失效。  




associative array(关联数组)   
       由键而不是位置来索引元素的数组。通常描述为:此类数组将键映射到其 
       关联的值上。  


associative container(关联容器)   
       存储对象集合的类型,支持通过键的高效查询。  


key_type   
       关联容器定义的类型,表示该容器在存储或读取值时所使用的键的类型。 
       对于 map 容器,key_type 是用于索引该容器的类型。对于 set 容器, 
       key_type 与 value_type 相同。  


map   
       定义关联数组的关联容器类型。与 vector 容器一样,map 也是类模板。 
       但是,map 容器定义了两种类型:键类型及其关联的值类型。在 map 中, 
       每个键只能出现一次,并关联某一具体的值。对 map 容器的迭代器进行 
       解引用将获得一个 pair 对象,该对象存储了一个 const 键和它所关联 
       的值。  


mapped_type   
       map 或 multimap 容器定义的类型,表示在 map 容器中存储的值的类型。  


multimap   
       类似 map 的关联容器。在 multimap 容器中,一个键可以出现多次。  


multiset   
       只存储键的关联容器类型。在 multiset 容器中,一个键可以出现多次。  


pair   
       一种类型,有两个 public 数据成员,分别名为 first 和 second。pair  
       类型是带有两个类型形参的模板类型,它的类型形参用作数据成员的类 
       型。  


set   
       只存储键的关联容器。在 set 容器中,一个键只能出现一次。  


strict weak ordering(严格弱排序)   
       关联容器所使用的键之间的比较关系。在这种关系下,任意两个元素都可 
       比较,并能确定两者之间谁比谁小。如果两个值都不比对方小,则这两个 
       值相等,详见第 10.3.1 节。  


value_type   
       存储在容器中的元素的类型。对于 set 和 multiset 容器,value_type  
       与 key_type 相同。而对于 map 和 multimap 容器,该类型为 pair 类 
       型,它的 first 成员是 const key_type 类型,second 成员则是  
       mapped_type 类型。  


* operator(解引用操作符)   
       用于 map、set、multimap 或 multiset 迭代器时,解引用操作符将生成 
       一个 value_type 类型的值。注意,对于 map 和 multimap 容器, 
       value_type 是 pair 类型。  


[] operator(下标操作符)   
       下标操作符。对 map 容器使用下标操作符时,[] 中的索引必须是  
       key_type 类型(或者是可以转换为 key_type 的类型)的值;该运算生 
       成 mapped_type 类型的值。  




back_inserter 
       形参为指向容器的引用的迭代器适配器,生成使用 push_back 为指定容 
       器添加元素的插入迭代器。  


bidirectional iterator (双向迭代器) 
       除了提供前向迭代器相同的操作之外,还支持使用——操作符向后遍历序 
       列。  


forward iterator (前向迭代器) 
       可读写元素的迭代器,但不支持——操作符。  


front_inserter 
       一种迭代器适配器,生成使用 push_front 在指定容器的开始位置添加新 
       元素的插入迭代器。  


                                 
generic algorithms (泛型算法) 
       与类型无关的算法。  


input iterator (输入迭代器) 
       只能读不能写元素的迭代器。  


insert iterator (插入迭代器) 
       使用容器操作插入元素而不是覆写元素的迭代器。给插入迭代器赋值,等 
       效于将具有所赋值的新元素插入到序列中。  


inserter (插入器) 
       一种迭代器适配器,形参为一个迭代器和一个指向容器的引用,生成使用  
       insert 为容器添加元素的插入迭代器,新元素插入在该适配器的迭代器 
       形参所指向的元素前面。  


istream_iterator 
       读输入流的流迭代器。  


iterator categories (迭代器种类) 
       基于迭代器所支持的操作,在概念上对迭代器进行分类。迭代器种类形成 
       了一个层次结构,功能较强的迭代器种类提供比它弱的迭代器的所有操 
       作。算法使用迭代器种类来指定它的迭代器实参必须支持什么操作。只要 
       迭代器至少提供这个层次的操作,就可以用于该算法。例如,一些算法只 
       要求输入迭代器,则可以使用除了输出迭代器之外的任意迭代器调用这样 
       的算法。而要求使用随机访问迭代器的算法只能用在支持随机访问运算的 
       迭代器上。  


off-the-end iterator (超出末端迭代器) 
       一种迭代器,用于标记序列中一个元素范围的结束位置。超出末端迭代器 
       用作结束遍历的“哨兵”,指向范围内最后一个元素的下一位置。超出末 
       端迭代器可能指向不存在的元素,因此永远不能做解引用运算。  


ostream_iterator 
       写输出流的迭代器。  


output iterator (输出迭代器) 
       只能写不能读元素的迭代器。  


                                   
predicate (谓词) 
       其返回类型可转换为 bool 值的函数。通常被泛型算法用于检查元素。标 
       准库所使用的谓词函数不是一元(需要一个实参)的就是二元的(需要两 
       个实参)。  


random-access iterator (随机访问迭代器) 
       除了支持双向迭代器相同的操作之外,还提供了使用关系运算比较迭代器 
       值的能力,以及在迭代器上做算术运算的能力。因此,这类迭代器支持随 
       机访问元素。  


reverse iterator (反向迭代器) 
       向后遍历序列的迭代器。这些迭代器颠倒了 ++ 和 -- 的含义。  


stream iterator (流迭代器) 
       可与流绑定在一起的迭代器。 






abstract data type(抽象数据类型)   
       使用封装来隐藏其实现的数据结构,允许使用类型的程序员抽象地考虑该 
       类型做什么,而不是具体地考虑类型如何表示。C++ 中的类可用来定义抽 
       象数据类型。  


access label(访问标号)   
       public 或 private 标号,指定后面的成员可以被类的使用者访问或者只 
       能被类的友元和成员访问。每个标号为在该标号到下一个标号之间声明的 
       成员设置访问保护。标号可以在类中出现多次。  


class(类)   
       是 C++ 中定义抽象数据类型的一种机制,可以有数据、函数或类型成员。 
       一个类定义了新的类型和新的作用域。  


class declaration(类声明)   
       类可以在定义之前声明。类声明用关键字 class(或 struct)表示,后 
       面加类名字和一个分号。已声明但没有定义的类是一个不完全的类型。  


class keyword(class 关键字)   
       用在 class 关键字定义的类中,初始的隐式访问标号是 private。  


class scope(类作用域)   
       每个类定义一个作用域。类作用域比其他作用域复杂得多——在类的定义 
       体内定义的成员函数可以使用出现在该定义之后的名字。  


concrete class(具体类)   
       暴露其实现细节的类。  


const member function(常量成员函数)   
       一种成员函数,不能改变对象的普通(即,既不是 static 也不是  
       mutable)数据成员。const 成员中的 this 指针指向 const 对象。成员 
       函数是否可以被重载取决于该函数是否为 const。  


constructor initializer list(构造函数初始化列表)   
       指定类的数据成员的初始值。在构造函数体现执行前,用初始化列表中指 
       定的值初始化成员。没有在初始化列表中初始化的类成员,使用它们的默 
       认构造函数隐式初始化。  


conversion constructor(转换构造函数)   
       可用单个实参调用的非 explicit 构造函数。隐式使用转换构造函数将实 
       参的类型转换为类类型。  


data abstraction(数据抽象)   
       注重类型接口的编程技术。数据抽象允许程序员忽略类型如何表示的细 
       节,而只考虑该类型可以执行的操作。数据抽象是面向对象编程和泛型编 
       程的基础。  


default constructor(默认构造函数)   
       没有指定初始化时使用的构造函数。  


encapsulation(封装)   
       实现与接口的分离。封闭隐藏了类型的实现细节。在 C++ 中,实施封装 
       可以阻止普通用户访问类的 private 部分。  


explicit constructor(显式构造函数)   
       可以用单个实参调用但不能用于执行隐式转换的构造函数。通过将关键字  
       explicit 放在构造函数的声明之前而将其设置为 explicit。  


forward declaration(前向声明)   
       对尚未定义的名字的声明。大多用于引用出现在类定义之前的类声明。参 
       见不完全类型。  


friend(友元)   
       类授权访问其非 public 成员的机制。类和函数都可以被指定为友元。友 
       元拥有与成员一样的访问权。  


incomplete type(不完全类型)   
       已声明但未定义的类型。不能使用不完全类型来定义变量或类成员。定义 
       指向不完全类型的引用或指针是合法的。  


member function(成员函数)   
       类的函数成员。普通成员函数通过隐式的 this 指针绑定到类类型的对 
       象。static 成员函数不与对象绑定且没有 this 指针。成员函数可以被 
       重载,只要该函数的版本可由形参的数目或类型来区别。  


mutable data member(可变数据成员)   
       一种永远也不能为 const 对象的数据成员,即使作为 const 对象的成 
       员,也不能为 const 对象。mutable 成员可以在 const 函数中改变。  


name lookup(名字查找)   
       将名字的使用与其相应的声明相匹配的过程。  


private members(私有成员)   
       在 private 访问标号之后定义的成员,只能被友元和其他的类成员访问。 
       类所使用的数据成员和实用函数在不作为类型接口的组成部分时,通常声 
       明为 private。  


public members(公用成员)   
       在 public 访问标号之后定义的成员,可被类的任意使用者访问。一般而 
       言,只有定义类接口的函数应定义在 public 部分。  


static member(静态成员)   
       不是任意对象的组成部分、但由给定类的全体对象所共享的数据或函数成 
       员。  


struct keyword(struct 关键字)   
       用在 struct 关键字定义的类中,初始的隐式访问标号为 public。  


synthesized default constructor(合成的默认构造函数)   
       编译器为没有定义任何构造函数的类创建(合成)的构造函数。这个构造 
       函数通过运行该类的默认构造函数来初始化类类型的成员,内置类型的成 
       员不进行初始化。  




assignment operator(赋值操作符)   
       赋值操作符可以重载,对将某个类类型对象赋值给另一同类型对象的含义 
       进行定义。赋值操作符必须是类的成员并且必须返回对所属类对象的引 
       用。如果类没有定义赋值操作符,则编译器将会合成一个。  


copy constructor(复制构造函数)   
       将新对象初始化为另一同类型对象的副本的构造函数。显式应用复制构造 
       函数进行对象的按值传递,向函数传递对象或从函数返回对象。如果没有 
       定义复制构造函数,编译器就为我们合成一个。  


                                  
copy control(复制控制)   
       控制类类型对象的复制、赋值和撤销的特殊成员。如果类没有另外定义它 
       们,则编译器将为这些操作合成适当定义。  


destructor(析构函数)   
       当对象超出作用域或删除对象时,清除对象的特殊成员函数。编译器将自 
       动撤销每个成员。类类型的成员通过调用它们的析构函数而撤销,撤销内 
       置或复合类型的成员无须做显式工作。特别地,析构函数的自动工作不会 
       删除指针成员所指向的对象。  


memberwise assignment(逐个成员复制)   
       用于描述合成赋值操作符如何工作的术语。赋值操作符将成员依次从旧对 
       象赋值给新对象。内置或复合类型成员直接赋值,类类型成员使用成员的 
       赋值操作符进行赋值。  


memberwise initialization(逐个成员初始化)   
       用于描述合成复制构造函数如何工作的术语。构造函数将成员依次从旧对 
       象复制到新对象。内置或复合类型成员直接复制,类类型成员使用成员的 
       复制构造函数进行复制。  


overloaded operator(重载操作符)   
       将一个 C++ 操作符重定义以操作类类型对象的函数。本章介绍了如何定 
       义赋值操作符,第十四章将更详细地介绍重载操作符。  


reference count(引用计数)   
       使用计数的同义词。  


Rule of Three(三法则)   
       一个经验原则的简写形式,即,如果一个类需要析构函数,则该类几乎也 
       必然需要定义自己的复制构造函数和赋值操作符。  


smart pointer(智能指针)   
       一个行为类似指针但也提供其他功能的类。智能指针的一个通用形式接受 
       指向动态分配对象的指针并负责删除该对象。用户分配对象,但由智能指 
       针类删除它。智能指针类需要实现复制控制成员来管理指向共享对象的指 
       针。只有在撤销了指向共享对象的最后一个智能指针后,才能删除该共享 
       对象。使用计数是实现智能指针类最常用的方式。  


                              
synthesized assignment operator(合成赋值操作符)   
       由编译器为没有显式定义赋值操作符的类创建(合成)的赋值操作符版本。 
       合成赋值操作符将右操作数逐个成员地赋值给左操作数。  


synthesized copy constructor(合成复制构造函数)   
       由编译器为没有显式定义复制构造函数的类创建(合成)的复制构造函数。 
       合成复制构造函数将原对象逐个成员地初始化新对象。  


use count(使用计数)   
       复制控制成员中使用的编程技术。使用计数与共享对象一起存储。需要创 
       建一个单独类指向共享对象并管理使用计数。由构造函数,而不是复制构 
       造函数,设置共享对象的状态并将使用计数置为 1。每当由复制构造函数 
       或赋值操作符生成一个新副本时,使用计数加 1。由析构函数撤销对象或 
       作为赋值操作符的左操作数撤销对象时,使用计数减 1。赋值操作符和析 
       构函数检查使用计数是否已减至 0。如果是,则撤销对象。  


value semantics(值语义)   
       对类模拟算术类型复制方式的复制控制控制行为的描述。值型副本是独立 
       的:对副本的改变不会影响原有对象。具有指针成员的值型类必须定义自 
       己的复制控制成员。复制控制操作复制指针所指向的对象。只包含其他值 
       型类或内置类型的值型类,通常可以依赖合成的复制控制成员。  




binary function object (二元函数对象) 
       具有函数调用操作符且表示一个二元操作符(例如一个算术操作符或关系 
       操作符)的类。  


binder (绑定器) 
       绑定指定函数对象的一个操作数的适配器。例如,bind2nd(minus<int>(),  
       2) 产生一个一元函数对象,从操作灵长中减去 2。  


class-type conversion (类类型转换) 
       到类类型或从类类型的转换。接受一个形参的非显式构造函数定义从形参 
       类型到类类型的转换。转换操作符定义从类类型到操作符所指定类型的转 
       换。  


conversion operators (转换操作符) 
       转换操作符是定义从类类型到另一类型的转换的成员函数。转换操作符必 
       须是类的成员,而且不能指定返回类型不能接受形参。转换操作符返回转 
       换操作符类型的值,即,operator int 返回 int,operator Sales_item  
       返回 Sales_item,依此类推。  


function adaptor (函数适配器) 
       为函数对象提供新接口的标准库的类型。  


function object (函数对象) 
       定义了重载调用操作符的类的对象。函数对象可以用在需要函数的地方。  


negator (求反器) 
       将指定函数对象的返回值求反的适配器。例如,not2(equal_to<int>())  
       产生与 not_equal_to<int> 等价的函数对象。  


smart pointer (智能指针) 
       一个类,定义了指针式行为和其他功能,如,引用计数、内存管理、更全 
       面的检查等。这种类通常定义了解引用操作符(operator*)和成员访问 
       操作符(operator->)的重载版本。  


unary function object (一元函数对象) 
       具有函数调用操作符且表示一个一元操作符的类,如一元减或逻辑非。  




abstract base class (抽象基类) 
       具有或继承了一个或多个纯虚函数的类。不能创建抽象基类类型的对象。 
       抽象基类的存在定义了一个接口,派生类将为基类中定义的纯虚函数定义 
       特定类型的实现,以完成类型。  


base class (基类) 
       从中派生其他类的类。基类的成员成为派生类的成员。  


class derivation list (类派生列表) 
       类定义用它指出类是派生类。派生列表包含可选的访问级别和基类的名 
       字,如果不指定访问标号,继承的类型取决于用来定义派生类的保留字, 
       默认情况下,如果派生类用保留字 struct 定义,则仅有继承基类,如果 
       派生类用保留字 class 定义,则私有继承基类。  


derived class (派生类) 
       继承了其他类的类。基类的成员也是派生类的成员,派生类可以重定义其 
       基类的成员还可以定义新成员。派生类作用域嵌套的基类作用域中,因此 
       派生类可以直接访问基类的成员。派生类中定义的与基类成员同名的成员 
       屏蔽基类成员,具体而言,派生类中的成员函数不重载基类成员。基类中 
       的被屏蔽成员可以用作用域操作符访问。  


direct base class (直接基类) 
       immediate base class 的同义词。  


dynamic binding (动态绑定) 
       延迟到运行时才选择运行哪个函数。在 C++ 中,动态绑定指的是在运行 
       时基于引用或指针绑定的对象的基础类型而选择运行哪个 virtual 函 
       数。  


dynamic type (动态类型) 
       T 
       运行时类型。基类类型的指针和引用可以绑定到派生类型的对象,在这种 
       情况下,静态类型是基类引用(或指针),但动态类型是派生类引用(或 
       指针)。  


handle class (句柄类) 
       提供到其他类的接口的类。一般用于分配和管理继承层次对象的指针。  


immediate base class (直接基类) 
       被派生类直接继承的基类。直接基类是在派生列表中指定的基类,直接基 
       类本身可以是派生类。  


indirect base class (间接基类) 
       非直接基类。直接基类直接或间接继承的类是派生类的间接基类。  


inheritance hierarchy (继承层次) 
       描述因共享公共基类的继承而相关联的类之间关系的术语。  


object-oriented programming (面向对象编程) 
       描述使用数据抽象、继承和动态绑定的程序的术语。  


polymorphism (多态性) 
       从意为“多种形态”的希腊单词派生的术语。在面向对象编程中,多态性 
       指的是基于引用或指针的动态类型获得类型明确的行为的能力。  


private inheritance (私有继承) 
       实现继承的一种形式,在这种形式中,private 基类的 public 和  
       protected 成员在派生类中均为 private。  
       protected access label (受保护访问标号) 
       定义在 protected 标号之后的成员可以被类成员、友元和派生类成员(非 
       友元)访问。类的普通用户不能访问 protected 成员。  


                                
protected inheritance (受保护继承) 
       在受保护继承中,基类的 protected 和 public 成员在派生类中均为  
       protected。  


public inheritance (公有继承) 
       基类的 public 接口是派生类的 public 接口的一部分。  


pure virtual (纯虚函数) 
       类的头文件中在函数形参表末尾 =0 声明的虚函数。类不必(但可以)定 
       义纯虚函数。带纯虚函数的类为抽象类。如果派生类没有定义所继承的纯 
       虚函数的自身版本,则派生类也是抽象类。  


refactoring (重构) 
       重新设计程序将相关部分集合到一个抽象中,用新抽象的使用代替原来的 
       代码。在面向对象编程中,重新设计继承层次中的类时经常发生重构。响 
       应需求的改变通常需要进行重构。一般而言,对类进行重构时,需要将数 
       据或函数成员移到继承层次的最高公共点以避免代码重复。  


sliced (切掉的) 
       描述用派生类型对象对基类类型对象进行初始化或赋值时情况的术语。对 
       象的派生部分被“切掉”,只留下基类部分,赋给基类对象。  


static type (静态类型) 
       编译时类型。对象的静态类型与动态类型相同。引用或指针所引用的对象 
       的动态类型可以不同于引用或指针的静态类型。  


virtual function (虚函数) 
       定义类型明确的行为的成员函数。通过引用或指针进行的虚函数调用,在 
       运行时基于引用或指针定制对象而确定。  






class template (类模板) 
       可以用来定义一组特定类型的类的类定义。类模板用 template 关键字后 
       接用尖括号(<>)括住、以逗号分隔的一个或多个形参的列表来定义。  


export keyword (导出关键字) 
       用来指出编译器必须记住相关模板定义位置的关键字,支持模板实例化的 
       分别编译模型的编译器使用它。export 关键字一般与函数定义一起出现, 
       类通常在相关类实现文件中声明为 export。在一个程序中,一个模板只 
       能用 export 关键字定义一次。  


function template (函数模板) 
       可用于不同类型的函数的定义。函数模板用 template 关键字后接用尖括 
       号(<>)括住、以逗号分隔的一个或多个形参的列表来定义。  


generic handle class (泛型句柄类) 
       保存和管理指向其他类的指针的类。泛型句柄接受单个类型形参,并且分 
       配和管理指向该类型对象的指针。句柄类定义了必要的复制控制成员,它 
       还定义了解引用操作符(*)和箭头成员访问操作符(->)。泛型句不需 
       要了解它管理的类型。  


inclusion compilation model (包含编译模型) 
       编译器用来寻找模板定义的机制,它依赖于模板定义被包含在每个使用模 
       板的文件中。一般而言,模板定义存储在一个头文件中,使用模板的任意 
       文件必须包含该文件。  


instantiation (实例化) 
       用实际模板实参产生模板特定实例的编译器过程,在该实例中,用对应实 
       参代替形参。函数基于调用中使用的实参自动实例化,使用类模板时必须 
       显式提供模板实参。  


                               
member template (成员模板) 
       类或类模板的是函数模板的成员。成员模板不能为虚。  


nontype parameter (非类型形参) 
       表示值的模板形参。在实例化函数模板的时候,将每个非类型形参绑定到 
       一个常量表达式,该常量表达式作为调用中使用的实参给出。在实例化类 
       模板的时候,将每个非类型形参绑定到一个常量表达式,该常量表达式作 
       为类实例化中使用的实参给出。  


partial specialization (部分特化) 
       类模板的一个版本,其中指定了某些但非全部的模板形参。  


separate compilation model (分别编译模型) 
       编译器用来查找模板定义的机制,它允许将模板定义和声明存储在独立的 
       文件中。模板声明放在一个头文件中,而定义只在程序中出现一次,一般 
       在源文件中,无论什么编程环境所支持的编译器都必须找到该源文件,并 
       实例化程序所使用的模板版本。  


template argument (模板实参) 
       在使用模板类型(如定义对象或强制类型转换中指定类型)的时候,指定 
       的类型或值。  


template argument deduction (模板实参推断) 
       编译器用来确定实例化哪个函数模板的过程。编译器检查用模板形参指定 
       的实参的类型,它用绑定到模板形参的类型或值自动实例化函数的一个版 
       本。  


template parameter (模板形参) 
       在模板形参表中指定的、可以在模板定义内部使用的名字。模板形参可以 
       是类型形参或非类型形参。要使用模板,必须为每个模板形参指定实参, 
       编译器使用这些类型或值来实例化类的一个版本,其中形参的使用以实参 
       代替。当使用函数模板的时候,编译器从函数调用中的实参推断模板实参, 
       并使用推断得到的模板实参实例化特定函数。  


template parameter list (模板形参表) 
       在模板定义或声明中使用的类型形参或非类型形参(以逗号分隔)的列表。  


template specialization (模板特化)                        
       类模板或类模板的成员的重定义,其中指定了模板形参。在定义了被特化 
       的模板之前,不能出现该模板的特化。在使用任意实参特化的模板之前, 
       必须先出现模板特化。  


type parameter (类型形参) 
       模板形参表中使用的表示类型的名字。当实例化模板的时候,将每个类型 
       形参绑定到实际类型。在函数模板中,从实参类型中推断类型或者在调用 
       中显式指定类型。类模板的类型实参必须在使用类的时候指定。  




allocator class(allocator 类)   
       标准库类,支持原始未构造内存的类特定的分配。allocator 类是一个类 
       模板,定义了成员函数,对 allocator 的模板形参类型的对象进行  
       allocate、deallocate、construct 和 destroy。  


anonymous union(匿名联合)   
       不用于定义对象的未命名联合。直接引用匿名联合的成员。这些联合不能 
       具有成员函数,也不能具有私有或受保护成员。  


bit-field(位域)   
       有符号或无符号整型类成员,它指定了分配给成员的位数。如果可能,将 
       类中以连续次序定义的位域压缩到公共整型值中。  


delete expression(delete 表达式)   
       delete 表达式撤销特定类型的动态分配对象,并释放该对象所用的内存。 
       delete[] 表达式撤销特定类型动态分配数组的元素,并释放数组使用的 
       内存。这些表达式使用库函数或类特定的 operator delete 函数的对应 
       版本来释放保存对象或数组的原始内存。  


discriminant(判别式)   
       一种编程技术,使用对象来确定任意给定时刻联合中保存的实际类型。  


dynamic_cast   
       执行从基类类型到派生类型的带检查强制转换的操作符。基类类型必须定 
       义至少一个 virtual 函数。这个操作符检查引用或指针所绑定对象的动 
       态类型。如果对象类型与转换的类型(或者从该类型派生的类型)相同, 
       则进行转换;否则,指针转换返回 0 指针,引用的转换抛出一个异常。  


freelist(自由列表)   
       一种内存管理技术,涉及预先分配未构造内存以保存在需要时创建的对 
       象。释放对象的时候,将它们的内在放回自由列表,而不是返还给系统。  


linkage directive(链接指示)   
       一种机制,用于允许从 C++ 程序调用以不同语言编写的函数。所有编译 
       器都支持调用 C 和 C++ 函数,是否支持任何其他语言随编译器而定。  


local class(局部类)   
       在函数内部定义的类。局部类只在定义它的函数内部可见,类的所有成员 
       必须定义在类定义体内部。局部类不能有静态成员,局部类成员不能访问 
       外围函数中定义的局部变量,它们可以使用外围函数中定义的类型名、静 
       态变量和枚举成员。  


member operators new and delete(成员操作符 new 和 delete)   
       类成员函数,覆盖由全局库函数 operator new 和 operator delete 执 
       行的默认内存分配。可以定义这些函数的对象形式(new)和数组形式 
        (new[])。成员 new 和 delete 函数隐式声明为 static,这些操作符 
       分配(释放)内存,它们由 new(delete)表达式自动使用,new(delete) 
       表达式处理对象初始化和撤销。  


nested class(嵌套类)   
       在其他类内部定义的类。嵌套类定义在其外围作用域内部:嵌套类名字必 
       须在定义它们的类作用域  中唯一,但可以在外围类之外的作用域中重 
       用。在外围类之外访问嵌套类需要使用作用域操作符指定包含嵌套类的作 
       用域。  


nested type(嵌套类型)   
       嵌套类的同义词。  


new expression(new 表达式)   
       new 表达式分配和构造特定类型的对象。new[] 表达式分配和构造对象数 
       组。这些表达式使用库函数 operator new 的对应版本分配原始内存,并 
       在该内存中构造特定类型的对象或数组。  


operator delete   
       释放由 operator new 分配的未类型化的未构造内存的库函数。库函数  
       operator delete[] 释放由 operator new[] 分配的用于保存数组的内 
       存。  


operator new   
       一个库函数,它分配给定大小未类型化的未构造内存。库函数 operator  
       new[] 为数组分配原始内存。这些库函数提供了比库类 allocator 更基 
       本的分配机制。现代 C++ 程序应使用 allocator 类而不是这些库函数。  


                               
placement new expression(定位 new 表达式)   
       在特定内存中构造对象的 new 的形式。它不进行分配,相反,它接受指 
       定在何处构造对象的实参。它是对 allocator 类的 construct 成员所提 
       供的行为的低级模拟。  


pointer to member(成员指针)   
       封装类类型以及指针所指向的成员类型的指针。成员指针的定义必须指定 
       类名以及指针可以指向的成员的类型:  
       TC::*pmem = &C::member;  
       这个语句将 pmem 定义为指针,它可以指向名为 C 的类的类型为 T 的成 
       员,并将 pmem 初始化为 C 中名为 member 的成员。对该指针解引用的 
       时候,它必须是绑定到类型 C 的对象或指向类型 C 的指针:  
        classobj.*pmem;  
        classptr->*pmem;  
       从 classptr 所指对象的 classobj 对象获取 member。  


portable(可移植的)   
       一个用来描述用相对较少的努力就可以移到新机器的程序的术语。  


run-time type identification(运行时类型识别)   
       用来描述语言和库设施的术语,这种设施允许在运行时获得引用或指针的 
       动态类型。RTTI 操作符 typeid 和 dynamic_cast 只为带虚函数的类类 
       型提供动态类型,应用于其他类型的时候,返回引用或指针的静态类型。  


typeid   
       一元操作符,接受一个表达式,并返回描述表达式类型的名为 type_info  
       的库类型的对象引用。如果表达式是具有虚函数的类型的对象,就返回表 
       达式的动态类型;如果该类型是没有定义虚函数的引用、指针或其他类型, 
       就返回引用、指针或对象的静态类型。  


type_info   
       描述类型的库类型。type_info 类是固有机器相关的,但任何库都必须定 
       义带有表 18.2 中所列出成员的 type_info。type_info 对象不能复制。  


                                
union(联合)   
       类形式的聚合类型,它可以定义多个数据成员,但在任意点只有一个成员 
       可以具有值。联合的成员必须为简单类型:内置类型,复合类型,没有定 
       义构造函数、析构函数或赋值操作符的类类型。联合可以有成员函数,包 
       括构造函数和析构函数。联合不能作基类使用。  


volatile   
       类型限定符,告诉编译器可以在程序的直接控制之外改变一个变量。它是 
       告诉编译器不能执行某些优化的信号。  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值