b;
相当于:
if(a
x=a;
else
x=b;
38.赋值运算符Assignmentoperator
即:
"="及其扩展赋值运算符
39.左值l-value
能出现在赋值表达式左边的表达式。
40.右值r-value
能出现在赋值表达式右边的表达式。
41.运算符的结合性operatorassociativity
指表达式中出现同等优先级的操作符时该先做哪个的规定。
42.位运算符bitoperator
"&","|","^",">>","<<"
43.逗号运算符Commaoperator
即","
44.逻辑运算符logicaloperator
"&&","||","!
"
45.关系运算符relationaloperator
">",">=","<=","<","<=","=="
运算符
对象创建的操作符。
运算符
对象释放操作符,触发析构函数。
48.内存泄露memoryleak
操作堆内存时,如果分配了内存,就有责任回收它,否则这块内存就无法重新使用,称为内存泄漏。
运算符
获得对象在内存中的长度,以字节为单位。
表达式
50.表达式expression
由操作符和标识符组合而成,产生一个新的值。
51.算术表达式arithmeticexpression
用算术运算符和括号将运算对象(也称操作数)连接起来,符合C++语法规则的式子。
52.关系表达式relationalexpression
用关系运算符和括号将运算对象(也称操作数)连接起来,符合C++语法规则的式子。
53.逻辑表达式logicalexpression
用逻辑运算符和括号将运算对象(也称操作数)连接起来,符合C++语法规则的式子。
54.赋值表达式assignmentexpression
由赋值运算符将一个变量和一个表达式连接起来,符合C++语法规则的式子。
55.逗号表达式commaexpression
由逗号操作符将几个表达式连接起来,符合C++语法规则的式子。
56.条件表达式 conditional expression
由条件运算符将运算对象连接起来,符合C++语法规则的式子。
语句
57.语句statement
在函数中控制程序流程执行的基本单位,如if语句,while语句,switch语句,do语句,表达式语句等。
58.复合语句compoundstatement
封闭于大括号{}内的语句序列。
59.循环语句loopstatement
for语句,while语句,do语句三种。
60.条件语句conditionalstatement
基于某一条件在两个选项中选择其一的语句称为条件语句。
函数function
61.成员函数memberfunction
在类中说明的函数称为成员函数。
62.全局函数globalfunction
定义在所有类之外的函数。
函数
由系统自动调用开始执行C++程序的第一个函数
64.外部函数externalfunction
在定义函数时,如果冠以关键字extern,表示此函数是外部函数。
65.内联函数inlinefunction
指用inline关键字修饰的函数。
在函数前加上关键字inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。
这样的好处是减少了函数调用的开销,产生较快的执行速度。
但是由于重复编码会产生较长代码,所以内联函数通常都非常小。
如果一个函数在类说明中定义,则将自动转换成内联函数而无需用inline说明。
66.函数重载functionoverloading
在同一作用域范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时编译器能够识别实参的个数和类型来决定该调用哪个具体函数。
需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息以使编译程序判断该使用哪个函数。
所以函数重载时必须是参数类型或者数量不同。
67.函数覆盖functionoverriding
对基类中的虚函数,派生类以相同的函数名及参数重新实现之。
68.函数声明functiondeclaration
在C++中,函数声明就是函数原型,它是一条程序语句,即它必须以分号结束。
它有函数返回类型,函数名和参数构成,形式为:
返回类型function(参数表);
参数表包含所有参数的数据类型,参数之间用逗号分开。
如下函数声明都是合法的。
intArea(intlength,intwidth);
或intArea(int,int);
69.函数定义functiondefinition
函数定义与函数声明相对应,指函数的具体实现,即包括函数体。
如:
intArea(intlength,intwidth)
{
数调用 function call
指定被调用函数的名字和调用函数所需的信息(参数)。
71.函数名functionname
与函数体相对,函数调用时引用之
72.函数类型functiontype
(1)获取函数并返回值的类型。
(2)获取函数但不返回值(void)。
(3)没有获取参数但返回值。
(4)没有获取参数也不返回值。
73.形式参数parameter
函数中需要使用变元(变量)时,将在函数定义时说明需要接受的变元,这些变元称为形式参数。
形式参数对应于函数定义时的参数说明。
其使用与局部变量类似。
74.实际参数argument
当需要调用函数时,对应该函数需要的变元所给出的数据称为实际参数。
75.值传递passbyvalue
函数调用时形参仅得到实参的值,调用结果不会改变实参的值。
76.引用传递passbyreference
函数调用时形参为实参的引用,调用结果会改变实参的值。
77.递归recursion
函数的自我调用称为递归。
每次调用是应该有不同的参数,这样递归才能终止。
Arecursivefunctionisafunctionthatcallsitself.
78.函数体functionbody
与函数名相对,指函数最外边由{}括起来的部分。
作用域
79.作用域actionscope(scale)
指标识符在程序中有效的范围,与声明位置有关,作用域开始于标识符的生命处。
分:
局部作用域,函数作用域,函数原型作用域,文件作用域,类作用域。
80.局部作用域localscope
当标识符的声明出现在由一对花括号所括起来的一段程序内时,该标示符的作用域从声明点开始到块结束处为止,此作用域的范围具有局部性。
81.全局作用域 globalscope
标识符的声明出现在函数,类之外,具有全局性。
82.类作用域 Class scopes
指类定义和相应的成员函数定义范围。
变量
83.全局变量globalvariable
定义在任何函数之外,可以被任一模块使用,在整个程序执行期间保持有效。
当几个函数要共享同一数据时全局变量将十分有效,但是使用全局变量是有一定弊端的:
全局变量将在整个程序执行期间占有执行空间,即使它只在少数时间被用到;大量使用全局变量将导致程序混乱,特别是在程序较复杂时可能引起错误。
84.局部变量localvariable
定义在函数内部的变量。
局部变量只在定义它的模块内部起作用,当该段代码结束,这个变量就不存在了。
也就是说一个局部变量的生命期就是它所在的代码块的执行期,而当这段代码再次被执行时该局部变量将重新被初始化而不会保持上一次的值(如果定义为静态变量,再次调用时将不会不会出事化而保持上次的值)。
需要注意的是,如果主程序和它的一个函数有重名的变量,当函数被调用时这个变量名只代表当前函数中的变量,而不会影响主程序中的同名变量。
85.自动变量automaticvariable
由auto修饰,动态分配存储空间,存储在动态存储区中,对他们分配和释放存储空间的工作是由编译系统自动处理的。
86.寄存器变量registervariable
存储在运算器中的寄存器里的变量,可提高执行效率。
87.静态变量staticvariable
由连接器分配在静态内存中的变量。
88.外部变量externalvariable
由extern修饰的变量
变量的生存期
静态生存期:
只要程序开始运行,这种生存期的变量就被分配了内存,这种变量的生存期和程序的运行期相同
局部生存期:
这种变量的生存期开始于程序执行经过其声明点时,而结束于命名它的标识符所在的作用域尾
动态生存期:
这种变量可以随时创建,随时删除,创建和删除是程序员用内存操作函数进行的。
89.类class
一种用户自定义类型,有成员数据,成员函数,成员常量,成员类型组成。
类是描叙C++概念的三个基本机制之一。
90.堆heap
即自由存储区,new和delete都是在这里分配和释放内存块。
91.栈stack
有两个含义:
(1)指内存中为函数维护局部变量的区域。
(2)指先进后处的序列。
92.抽象类abstractclass
至少包含一个纯虚函数的类。
抽象类不能创建对象,但可以创建指向抽象类的指针,多态机制将根据基类指针选择相应的虚函数。
93.嵌套类nestedclass
在一个类里可以定义另一个类,被嵌入类只在定义它的类的作用域里有效。
94.局部类localclass
在函数中定义的类。
注意在函数外这个局部类是不可知的。
由于局部类的说明有很多限制,所以并不常见。
95.基类baseclass(parentclass)
被继承的类称为基类,又称父类、超类或范化类。
它是一些共有特性的集合,可以有其它类(派生类)继承它,这些类只增加它们独有的特性。
96.派生类derivedclass(subclass)
继承的类称为派生类。
派生类可以用来作为另一个派生类的基类,实现多重继承。
一个派生类也可以有两个或两个以上的基类。
定义时在类名后加":
被继承类名"即可。
99.对象object
有两重含义:
1.内存中含有某种数据类型值的邻近的区域。
2.某种数据类型的命名的或未命名的变量。
一个拥有构造函数的类型对象在构造函数完成构造之前不能认为是一个对象,在析构函数完成析构以后也不再认为它是一个对象。
100.数据成员datamember
指类中存储数据的变量。
101.实例化instantiation
即建立类的一个对象。
实例(instance)
102.构造函数constructor
是一个类的实例的初始化函数,将在生成类的实例时被自动调用,用于完成预先的初始化工作。
一个类可以有几个构造函数,以不同的参数来区别,即构造函数可以被重载,以便不同的情况下产生不同的初始化;也可以没有构造函数,此时系统将调用缺省的空构造函数。
需要注意的是构造函数没有返回类型。
103.成员初始化表initializationtable
成员初始化表可用于初始化类中的任何数据成员,放在构造函数头与构造函数体之间,用":
"与构造函数头分开,被初始化的数据成员的值出现在一对括弧之间,它们之间用逗号分开。
104.析构函数destructor
是一个类的实例的回收函数,将在该实例结束使用前被自动调用,用于完成资源的释放。
一个类只可以有一个析构函数,当析构函数执行后,该实例(对象)将不复存在。
析构函数同样没有返回值。
105.虚析构函数virtualdestructor
由virtual修饰的析构函数,当用基类指针释放派生类对象时可根据它所指向的派生类对象释放准确的对象。
106.继承inheritance
面向对象的程序设计语言的特点之一。
即一个对象获得另一个对象的特性的过程。
如将公共属性和服务放到基类中,而它的各派生类除了有各自的特有属性和服务外还可以共享基类的公共属性和服务。
这样的好处是容易建立体系,增强代码重复性。
107.单继承singleinheritance
一个派生类只有一个基类,成为单继承。
108.重继承multipleinheritance
一个派生类拥有多个基类,成为多继承。
109.虚函数virtualfunction
在基类中说明为virtual并在派生类中重定义的函数。
重定义将忽略基类中的函数定义,指明了函数执行的实际操作。
当一个基类指针指向包含虚函数的派生对象时,C++将根据指针指向的对象类型来决定调用哪一个函数,实现了运行时的多态性。
这里的重定义类似于函数重载,不同的是重定义的虚函数的原型必须和基类中指定的函数原型完全匹配。
构造函数不能是虚函数,而析构函数则可以是。
110.纯虚函数purevirtualfunction
在基类中只有声明没有实现的虚函数。
形式为:
virtualtypefunname(paralist)=0。
这时基函数只提供派生类使用的接口,任何类要使用必须给出自己的定义。
111.多态性polymorphism
给不同类型的实体提供单一接口。
虚函数通过基类接口实现动态多态性,重载函数和模板提供了静态多态性。
112.复制构造函数copyconstructor
以自身类对象为参数的构造函数,如Z:
:
Z(constZ&).用在同类对象间进行初始化。
113.运算符重载operatoroverloading
C++中可以重载双目(如+,×等)和单目(如++)操作符,这样可以使用户像使用基本数据类型那样对自定义类型(类)的变量进行操作,增强了程序的可读性。
当一个运算符被重载后,它将具有和某个类相关的含义,同时仍将保持原有含义。
114.静态成员函数staticmemberfunction
成员函数通过前面加static说明为静态的,但是静态成员函数只能存取类的其他静态成员,而且没有this指针。
静态成员函数可以用来在创建对象前预初始化专有的静态数据。
115.静态成员变量staticmembervariable
在成员变量之前加static关键字将使该变量称为静态成员变量,该类所有的对象将共享这个变量的同一拷贝。
当对象创建时,所有静态变量只能被初始化为0。
使用静态成员变量可以取代全局变量,因为全局变量是违背面向对象的程序设计的封装性的。
116.私有成员privatemembers
只能由自身类访问的成员。
117.保护成员protectedmember
只能由自身类及其派生类访问的成员。
118.友元friend
被某类明确授权可访问其成员的函数和类。
119.友元函数 friendfunction
在函数前加上关键字friend即说明了一个友元函数,友元函数可以存取类的所有私有和保护成员。
友元在重载运算符时有时是很有用的。
120.友元类friendclass
被某类明确授权可访问其成员的类
121.例外处理exceptionhandling
报告局部无法处理某错误的基本方式。
由try.,throw,catch组成。
122.文件file
是用于从磁盘文件到终端或打印机的任何东西。
流通过完成打开操作与某文件建立联系。
补充部分:
STL
StandardTemplateLibrary,标准模板库,从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。
这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。
STL现在是C++的一部分,因此不用额外安装什么。
容器:
容纳、包含一组元素的对象。
迭代器(Iterator)
提供顺序访问容器中每个元素的方法
vector
(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,
但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销.
deque:
(小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector