码迷,mamicode.com
首页 > 其他好文 > 详细

2.5:处理类型

时间:2017-10-07 22:48:23      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:作用   一个   type   3.1   说明符   col   忽略   别名   定义   

1.类型别名

关键字typedef

typedef int myInt;  //myInt为int同义词

可以用myInt来声明对象

myInt a = 0;     //等于int a = 0

在函数指针中typedef用处更大,以后细说

---------------------------------------------------------------------------------------------------------------

C++11新标准下,可以用using

using myInt = int;  //和typedef效果一样

==============================分割线==============================

auto类型说明符

由C++11新标准引入,可以让编译器通过初始值在推算变量的类型,所以auto定义的变量必须有初始值

  auto num = num1 + num2;    //num可以初始化为num1和num2相加的结果

auto也可以在一条语句中声明多个变量,该语句中所有变量的类型必须一样

  auto i = 0, *p = &i;       //正确

  auto j = 0, pi = 3.14;       //错误,类型不一致

编译器推断出的auto类型有时候和初始值的类型并不完全一样,编译器会适当地改变结果类型使其符合初始化规则

  1.当引用被用作初始值时,真正参与初始化的其实是引用对象的值,此时编译器以引用对象的类型作为auto的类型

  2.auto会忽略掉顶层const,底层const会被保留下来

    const int i = 0;

    auto a = i;      //此时a为int不为const int,可以改变a的值

==============================分割线==============================

decltype类型指示符,

从表达式的类型推断出要定义的变量的类型,但是不用该表达式的值初始化变量,作用是选择并返回操作数的数据类型

  const int m = 10, &n = m;

  decltype(num) a = 0;    //num是const int类型

  decltype(n) b = a;      //b的类型是const int&

  decltype(n) c;        //错误,引用必须初始化

如果使用的表达式不是一个变量,则decltype返回表达式结果对应的类型

如果表达式的内容是解引用操作,则decltype将得到引用类型

  int i= 42, *p = &i, &r = i;

  decltype(r + 0) b;      //正确,加法结果为int,b是个为初始化的int

  decltype(*p) c;        //错误,c是int&,必须初始化

decltype的表达式如果加了括号,结果为引用

  decltype((i)) d;        //错误,id是int&,引用必须初始化

  decltype(i) e;        //正确

2.5:处理类型

标签:作用   一个   type   3.1   说明符   col   忽略   别名   定义   

原文地址:http://www.cnblogs.com/CoderZSL/p/7635983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!