20、模板函数可以使不同类型的对象享有共同的行为特性。程序只在编译期间才判断出具体的参数类型,并将其实例化。
21、迭代器可以满足对容器不同的访问需求,STL总共定义了五种迭代器类型:顺序只读、顺序只写、顺序读写(正向迭代器)、可逆访问(双向迭代器)、随机访问。
22、容器中使用不对称的开闭区间组合,即end指向区间最后一个元素的后面的位置,如此做有以下几个优点:A:若区间为空区间,则可以很方便的通过判断start和end所指位置是否相等来判断,倘若将end设置为表示最后一个元素,则需要对空区间设置独特的表示方式。B:可以方便的表示区间之外的值,且该值可以作为异常值返回,避免自定义一个异常返回值。
23、C++的类型分两种:内部类型和外部类型,内部类型有:char\int\double;外部类型有:string/vector/stream.
24、const放在函数后,表示该函数为常成员函数,不允许更改数据成员的值,同时也不能调用能改变数据成员值的函数。
例子:double grad() const;
25、函数或变量前面添加::,若前面不加具体类名或空间名,则默认调用同名的全局函数。例如:
#include<iostream>
using namespace std;
int a=1;
int main()
{
int a=3;
cout<<::a<<endl; //1
cout<<a<<endl; // 3
return 0;
}
26、struct的成员默认(缺省权限)为public,而class的成员默认为private,另外struct不可以定义成员函数。Union中所有成员共用同一块存储空间,大小由最大的成员决定,一般为最大变量长度的整数倍。
27、系统的存储模式分为两种:大端模式和小端模式,大端模式中,字数据的高字节存储在低地址中,而低字节存储在高地址中,小端对齐则高字节存储在高地址中,低字节存储在低地址中。判断系统的存储模式,可以利用联合体union的特点,其中所有数据均从低地址开始存储。判断函数如下(返回1则为小端,0则为大端):
int checkSystem( )
{
union check
{
int i;
char ch;
} c;
c.i = 1;
return (c.ch ==1);
}
28、C++类成员的初始化分以下几种情况:1、若数据为外部类型,且有一个及以上构造函数,则根据构造函数来初始化。2、若数据为内部类型,则数值初始化为零,缺省初始化则为未定义的值。3、若外部类型没有构造函数,则对其中的数据成员进行相应的数值或缺省初始化。