处理类型

1.类型别名

a.传统方法:关键字typedef
typedef int newType;  	//newType 是int的同义词
typedef newType *p;	//p是int*的同义词

b.新方法:别名声明(alias declaration),使用 using
using newType=int;	//newType是int的同义词

当某个类型别名指代的是复合类型或常量,不能把它带入声明语句中。
typedef char *pstring;
const pstring cstr=0;	//cstr是指向char的常量指针  同等于char * const cstr =0; 
cosnt pstring *ps;	//ps是一个指向char的常量指针的指针
pstring 实际上是指向char的指针,所以const pstring 是指向char的常量指针。

2.auto类型说明符

auto是C++11新引入的类型说明符,用它能让编译器替我们去分析表达式所属的类型。
auto让编译器通过初始值来推断变量的类型。(初始值是引用对象时,初始类型判断为所引用的对象的类型)
auto 声明语句中的所有变量的初始基本数据类型必须一致。
auto 一般忽略掉顶层const,保留底层cosnt。
const int a=0;
auto b=a,&c=a;		//b是int,c是int类型a的引用 (a的顶层const 被忽略掉了)
auto d=&a;		//d是指向整数常量的指针(对常量对象取地址是一种底层const)

3.decltype类型指示符

C++引入说明符decltype,用来从表达式中的类型推断出要定义的变量类型,并且不需要用该表达式的值初始化变量(不然可以用auto)。
decltype(f()) a;	//用f()返回值类型定义a
decltype(a) b;		//用a对应的类型定义b
decltype推断方式:
a.表达式时一个变量时,decltype返回该变量的类型(包括顶层const和引用)。
decltype(f()) a;	//用f()返回值类型定义a
decltype(a) b;		//用a对应的类型定义b

注意:decltype((variable))(双层括号)的结果永远是引用。

b.表达式不是一个变量时,decltype返回表达式结果对应的类型。
若表达式求值结果是左值时,返回值对应的类型的引用类型。若表达式求值结果是右值,返回值对应的类型。
(左右值简单归纳:当一个对象被用作右值得时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置))
(一般来说,可以放在赋值操作符左边的是左值,可以放在右边的而是右值
(左值表示程序中必须有一个特定的名字引用到这个值。右值表示程序中没有一个特定的名字引用到这个值除了用地址。)
decltype(f()) a;	//用f()返回值类型定义a
decltype(a) b;		//用a对应的类型定义b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值