您的位置:首页 > 编程语言 > C语言/C++

C++ 11的几个新特性

2014-10-28 23:43 591 查看
1,range for; alto

for (const auto& agent : componentAgents_)
{
agent->interface();
}

参见 http://www.cnblogs.com/h46incon/archive/2013/06/02/3113737.html
最新的C++标准更新了auto关键字的功能
除了具有原有的含义外,还增加了一种类似其他高级语言的型别推导特性
使用auto来代替变量的类型,
前提是被明确类型的初始化变量初始化的,可以使用auto关键字

比如int i=10; auto a = i; //这样a也是int类型了
这在使用一些模板类的时候,对于减少冗赘的代码也很有用
参见 http://zhidao.baidu.com/link?url=6_MLuvtOysRI0Mar386KMVr4_akcjfecdhUkg14esU7wM7G3UAtoR5ngvT50zM5yqdjxzxWxtB6t4Isn3Zh1W_[/code] 2,Lanbda表达式

// the type of a closure cannot be named, but can be inferred with auto
auto func1 = [](int i) { return i+4; };
std::cout << "func1: " << func1(6) << '\n';
[code]
[b][
capture [code]]
(
params
)
mutable exception attribute
->
ret
{
body
}

[/b][/code]
capture 指定了在可见域范围内 lambda 表达式的代码内可见得外部变量的列表,具体解释如下:

[a,&b]
a变量以值的方式呗捕获,b以引用的方式被捕获。

[this]
以值的方式捕获 this 指针。

[&]
以引用的方式捕获所有的外部自动变量。

[=]
以值的方式捕获所有的外部自动变量。

[]
不捕获外部的任何变量。

参见 http://www.cnblogs.com/haippy/archive/2013/05/31/3111560.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: