- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C编程小记,亲自整理C学习笔记,绝对实用
C++开发者都应该使用的10个C++11特性
在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的 常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。
auto
在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符,通知编译器去根据初始化 代码推断所声明变量的真实类型。各种作用域内声明变量都可以用到它。例如,名空间中,程序块中,或是for循环的初始化语句中。
auto i = 42; // i is an int auto l = 42LL; // l is an long long auto p = new foo(); // p is a foo*
使用auto通常意味着更短的代码(除非你所用类型是int,它会比auto少一个字母)。试想一下当你遍历STL容器时需要声明的那些迭代器(iterator)。现在不需要去声明那些typedef就可以得到简洁的代码了。
std::map map; for(auto it = begin(map); it != end(map); ++it) { }
需要注意的是,auto不能用来声明函数的返回值。但如果函数有一个尾随的返回类型时,auto是可以出现在函数声明中返回值位置。这种情况下,auto 并不是告诉编译器去推断返回类型,而是指引编译器去函数的末端寻找返回值类型。在下面这个例子中,函数的返回值类型就是operator+操作符作用在 T1、T2类型变量上的返回值类型。
template auto compose(T1 t1, T2 t2) - decltype(t1 + t2) { return t1+t2; } auto v = compose(2, 3.14); // vs type is double
nullptr
以前都是用0来表示空指针的,但由于0可以被隐式类型转换为整形,这就会存在一些问题。关键字nullptr是std::nullptr_t类型的 值,用来指代空指针。nullptr和任何指针类型以及类成员指针类型的空值之间可以发生隐式类型转换,同样也可以隐式转换为bool型(取值为 false)。但是不存在到整形的隐式类型转换。
void foo(int* p) {} void bar(std::shared_ptr p) {} int* p1 = NULL; int* p2 = nullptr; if(p1 == p2) { } foo(nullptr); bar(nullptr); bool f = nullptr; int i = nullptr; // error: A native nullptr can only be converted to bool or, using reinterpret_cast, to an integral type
为了向前兼容,0仍然是个合法的空指针值。
Range-based for loops (基于范围的for循环)
为了在遍历容器时支持”foreach”用法,C++11扩展了for语句的语法。用这个新的写法,可以遍历C类型的数组、初始化列表以及任何重载了非成员的begin()和end()函数的类型。
如果你只是想对集合或数组的每个元素做一些操作,而不关心下标、迭代器位置或者元素个数,那么这种foreach的for循环将会非常有用。
std::map map; std::vector v; v.push_back(1); v.push_back(2); v.push_back(3); map[one] = v; for(const auto kvp : map) { std::cout kvp.first std::endl; for(auto v : kvp.second) { std::cout v std::endl; } } int arr[] = {1,2,3,4,5}; for(int e : arr) { e = e*e; } C++ 11 CPP 11 features
Override和final
我总觉得 C++中虚函数的设计很差劲,因为时至今日仍然没有一个强制的机制来标识虚函数会在派生类里被改写。vitual关键字是可选的,这使得阅读代码变得很费劲。因为可能需要追溯到继承体系的源头才能确定某个方法是否是虚函数。为了增加可读性,我总是在派生类里也写上virtual关键字,并且也鼓励大家都这么做。即使
您可能关注的文档
- 2011届高三物理一轮复习_6.4《万有引力理论成就》学案_粤教版.doc
- 2011届高考数学人教A版一轮复习课时练习-第二章_第二节--函数定义域和值域.doc
- 2.2 热力学第一定律对理想气体应用.doc
- 2011年8月可能考到托福全科机经.doc
- 2011年CIA考试《内部审计在治理、风险和控制中作用》练习题.doc
- 2011年《内部审计在治理、风险和控制中作用》考试大纲.doc
- 2011年全国各地100份中考数学试卷分类汇编(三角形边与角).doc
- 2011年司法考试中国法制史考点串讲:秦汉时期法律.doc
- 2011年司法考试论述题复习必背重要考点.doc
- 2011年成人高考(专升本)大学语文60篇课文详解.doc
最近下载
- 【关爱青春期】《男生青春期教育讲座》.pptx VIP
- JB∕T 8527-2015 金属密封蝶阀.pdf VIP
- 2025 《高质量数据集 分类指南》.pdf VIP
- 2025年八年级语文上册《钱塘湖春行》古诗鉴赏对比阅读训练含答案.docx VIP
- 《工程测量基础(第2版)》课件 闭合导线测量.pptx
- 《铁路技术管理规程》(普速铁路部分)考试复习参考题库资料(500题).pdf VIP
- 2025年宿州市公安机关第二批公开招聘警务辅助人员240人笔试备考试题及答案解析.docx VIP
- 管理创新与思维创新 .pptx VIP
- 《光电传感器》PPT课件.ppt VIP
- CAD基础教程详解.ppt VIP
原创力文档


文档评论(0)