博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++学习笔记2--constexpr,类型别名,auto
阅读量:5226 次
发布时间:2019-06-14

本文共 955 字,大约阅读时间需要 3 分钟。

 

constexpr:修饰常量表达式,约定修饰对象不仅为常量,而且在编译阶段就能得到值。

与const不同的是,constexpr约束的是当事人,就是说,constexpr int *a=1;这样的语句,a指针本身是const,并且右边也足够简单,而const int*a;这样的语句,则约定了a指向对象是const,这是不同点。constexpr直接限定为顶层const。

类型别名:传统的是typedef,

typedef double a;a b = 1.1;

类似这样的代码么就是说a是一个double类型

c11新标准有新的类型别名定义:

using a = double;

  关于指针的类型别名有个需要注意的点:

typedef char *a;const a cstr = 0 ;//cstr是char的常量指针const a *p ; //p是指向char常量指针的 指针

如果直接字面替代理解typedef会得到错误的理解。

 例如带入以后得到这样的代码:const char *a = 0;  这是底层const,这种理解是错误的。

auto类型:c11新标准引入的类型。由编译器帮助我们去判断类型。

类似auto a = 1;则a是int型。

需要注意的是:

const int *a = NULL;auto b = a; const int c = 1;auto d = c;

b结果是一个指向int常量的指针,d只是普通的int型。

编译器会放弃顶层const,而底层的const则会保留下来。

类似于:

auto a = 1,b=2;

这样的代码,必须保证a,和b是同一种类型。

否则会报错。

decltype 类型指示符

c++11新标准的另一种指示符就是decltype类型指示符:

decltype(f()) sum = x;

它根据f()返回值限定类型,他处理顶层和底层const与auto不同,const会被保留,即使是顶层。

如:

const int i = 0;

decltype(i) a = 0;

a 也是const int.

解引用和()表达式最后也会返回引用。

 

转载于:https://www.cnblogs.com/wuweixin/p/5236205.html

你可能感兴趣的文章
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>