博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++11 新特性之 autokeyword
阅读量:7112 次
发布时间:2019-06-28

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

C++11是对眼下C++语言的扩展和修正.C++11包含大量的新特性:包含lambda表达式,类型推导keywordauto、decltype,和模板的大量改进。

g++编译c++11命令加上

-std=c++11

C++11中引入auto第一种作用是为了自己主动类型推导

auto的自己主动类型推导,用于从初始化表达式中判断出变量的数据类型。

通过auto的自己主动类型推导,能够简化我们的编程工作

auto实际上实在编译时对变量进行了类型推导,所以不会对程序的执行效率造成不良影响另外,似乎auto并不会影响编译速度,由于编译时本来也要右側推导然后推断与左側是否匹配。

#include 
#include
#include
using namespace std;template
void func(T t, U u){ auto ret = t*u;}int main(){ //auto a; // 错误,auto是通过初始化表达式进行行类型推导,假设没有初始化表达式,就无无法确定a的类型 auto i = 1; cout << typeid(i).name() << endl; //输出为i,g++编译器下输出i为int类型,MS的vs2008输出为int auto d = 1.0; cout << typeid(d).name() << endl; //输出为d,double类型 auto str = "Hello C++11"; cout << str << endl; vector
iv; iv.push_back(1); iv.push_back(2); iv.push_back(3); for (auto itr=iv.begin(); itr!=iv.end(); itr++) //自己主动推导为迭代器 cout << *itr << endl; return 0;}

另外。在使用模板技术时。假设某个变量的类型依赖于模板參数,不使用auto将非常难确定变量的类型(使用auto后,将由编译器自己主动进行确定)。

以下是一个详细的样例。

template 
void Multiply(T t, U u){ auto v = t*u;}

转载地址:http://cighl.baihongyu.com/

你可能感兴趣的文章
css加载会造成阻塞吗?
查看>>
由一个绝对定位引发overflow:auto滚动问题产生的关于包含块(containing block)的思考...
查看>>
CS-231N-斯坦福李飞飞机器视觉课(Cydiachen版笔记+感悟)
查看>>
推荐一个有趣的Chrome扩展程序-查看任意网站的开发技术栈
查看>>
聊聊storm TridentWindowManager的pendingTriggers
查看>>
React 解决fetch跨域请求时session失效
查看>>
翻译_只需20行代码创造JavaScript模板引擎(二)
查看>>
Blockchain和Tangle哪一个是未来?
查看>>
apicloud拉起小程序并传递参数
查看>>
虚拟机Centos6.8安装MYSQL5.7,本地Navicat连接
查看>>
简单聊聊DOM
查看>>
【JavaScript】JavaScript Array 对象(数组)
查看>>
github 上有趣又实用的前端项目(持续更新,欢迎补充)
查看>>
opencv python 直方图均衡化
查看>>
HotFrameLearning 热门框架学习(前言)
查看>>
git团队开发流程
查看>>
【Under-the-hood-ReactJS-Part6】React源码解读
查看>>
深入理解css之vertical-align
查看>>
Laravel事件
查看>>
matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线
查看>>