c++之处理类型

类型别名


定义类型别名有两只方法,分别是:

  1. 使用关键字:typedef (传统方法)
  2. 使用关键字:using (新标准)
typedef char* pstring;
const pstring cstr = 0; // cstr 是指向char的常量指针(**const被识别为顶层const**)

using int32_t = int

auto类型说明符


c++ 11 新标准引入了auto类型说明符, 用它就能让编译器替我们分析表达式所属的类型。另外,因为一条声明语句只能有一个基本类型,所以该语句的所有变量的初始基本类型都必须一样。

auto i =0, *p = &i;
auto i = 0, j = 3.14;  // 错误,i和j的类型不一致。

decltype


c++ 11 引入了decltype, 它的作用是选择并返回操作数的数据类型。 decltype 使用 表达式是一个变量时,会返回该变量的类型(包括顶层const和引用)

const int ci = 0;
decltype(ci) x = 0;     // x的类型是const int
int i = 1, *p = &i;
decltype(*p) c;         // 错误,c是int&, 必须初始化

另外, 我们知道 解引用指针 可以得到指针所指的对象, 而且还能给这个对象赋值, 所以 decltype(*p) 的结果是int& 而非 int.

decltype((i)) d;   // 错误,d 是int&, 必须初始化
decltype(i)   e;   // 正确,e 为int

如果给变量加上了一层或多层括号, 编译器就会把它当成表达式。 变量是一种可以作为赋值语句左值的特殊表达式, 所以decltype 会得到引用类型。

猜你喜欢

转载自blog.csdn.net/qq_35644234/article/details/81584956
今日推荐