1. 复合类型:基于其他类型定义的类型。
a)引用:并非对象,只是为对象起了另一个名字。特点:引用必须被初始化。例:
1. int ival = 1024;
2. int &refval = ival ;
b)指针:是“指向”另外一种类型的复合类型。特点:1指针本身就是对象,允许对指针赋值和拷贝,在生命周期内可以指向不同的对象;2指针无须再定义时赋初值。相关操作符:解引用符(*);取地址符(&)。例:
1. int *ip1,*ip2; //指向int型对象的指针,对于定义的空指针先给定变量地址再赋值(初始化)。
2. int ival = 42;
3. int *p = &ival;//指向变量ival的指针
2. 常量:const+数据类型。特点:1对常量的引用要用常量引用(const+数据类型+&引用名);2指向常量的指针不能用于改变其所指对象的值,存放常量对象的地址,只能使用指向常量的指针。
3. auto类型说明符:让编译器分析表达式所属的类型。
4. decltype类型指示符:选择并返回操作数的类型。例:
1. decltype(f()) sum = x; //sum的类型为函数f的返回类型
2. decltype(val1) val2 = val1;//
5. 头文件:通常包含只能被定义一次的实体,如类,const和constexpr变量等。头文件预处理保护符:#ifdef当且仅当变量已定义时为真;#ifndef当且仅当变量未定义时为真。例:
1. #ifndef SHOPPING_LIST
2. #define SHOPPING_LIST
3. struct Shopping_list
4. {
5. std::string item1;
6. unsigned item1_price;
7. std::string item2;
8. unsigned item2_price;
9.
10. };
11. #endif // Shopping_list