处理类型
- 类型别名
- 传统的命名方法:
- typedef double wages; //wages 是double 的同义词;
- typedef wages base,*p;//base 是double 的同义词,p 是double *的同义词
- 新标准——别名声明——using
- using SI = Sales_item; //SI是Sales_item的同义词
- 别名的使用:SI iemt; //等价于Sales_item item;
- 注意与指针的用法:typedef char *pstring; //pstring 是char *的别名;
- 传统的命名方法:
- auto类型说明符
- auto 一般会忽略顶层const!!!!!!
- 一条声明语句只能有一个基本数据类型
- 符号&、*只从属于某个声明符,而非基本数据类型的一本部分
对常量对象取地址是一种底层const;
const int b = 42;
auto a1 = &b; //a1 是指向整数常量的常量指针
auto *a2 = &b; //a2 是指向整数常量的常量指针
//两种定义都是相同,a2更具有可读性;
- decltype类型指示符
auto的的作用能表达式的类型推断出要定义的变量的类型,并且能初始化;
decltype的作用只是推断出要定义变量的类型,不做该表达式的值初始化变量;
- decltype 返回该变量的类型时包括顶层const和引用在内;(与auto不同)
- decltype 的参数是一个左值:*p,得到是T&,T是*p所引用的类型;
- decltype ((variable))的结果永远是引用,引用的类型时variable的类型相同;
- decltype与auto指定类型的不同
- 对于const:auto一般会忽略顶层const,decltype则不会;
- 对于声明与初始化:使用auto时,声明与初始化必须同时进行,decltype可以仅仅是声明而不初始化;
- 对于复合类型:* &
待补充!
自定义数据类型
- struct 定义类
- 最好不要把对象的定义和类的定义放在一起;
- 类数据成员初始化
- C++ 新标准规定,可以为数据成员提供一个类内初始值,用于初始化数据成员。
- 预处理的概述
- 头文件保护符:#ifndef……#endif,防止重复包含;
- 预处理变量无视c++语言关于作用域的规则;
时间: 2024-10-08 01:38:14