初窥C++11

  没有买书, 入门先读了一遍http://www.chenlq.net/cpp11-faq-chs, 里面写有C++11 FAQ中文翻译版.

 

  我感觉C++11在语言新特性方面的改动基本上是为了4个目标, 说白了就是我看完之后脑子里还有印象的东西:

1, 提高性能, 同时不让程序员复出更多劳动.

2, 给旧语法提供新语法支持, 让程序员写更少的代码, 实现更加不可思议的功能(模板变参)

3, 提供了一些工具也好, 语法也好, 让程序员能够给自己的代码加上严格的编译检查, 防止自己犯2.

4, 引入之前tr1/boost中某几个实用的库到C++11标准库, 顺便强化一下C++标准库.

  所以如果真的去看C++11各种新特性, 会发现并没有之前想象的很复杂, 许多特性我相信未来通过类似Google编程规范都会被筛掉, 留下的一定是值得使用的特性, 拭目以待.

 

  随便捡几个我觉得的确很实惠的特性, 学院派的东西就暂且忘掉先:

1, auto: 程序员不用再纠结各种超长的typedef定义了.

2, alignas: 再也不用union来做char[]缓冲区的内存对齐了.

3, lambda: 与STL配合, 可以把一些简单的函数直接编码在调用处, 对可读性是提高.

4, 右值与move: 减少内存拷贝, 这是非常实惠的.

5, bind/function: 正式纳入namespace std了, 一种特立独行的抽象方式.

6, 初始化列表initializer_list: 令构造函数有了更多可能.

7, 模板变参: 复杂暗黑的玩意, 编译期解决各种运行期问题, 只有想不到, 没有做不到, 以后各种用法慢慢普及开来相信不会太晦涩.

8, 简化的for循环: 好吧, 和auto如出一辙, 让程序员更省字.

9, STL新增容器: tuple, 基于模板变参实现, 可以装各种不同类型, 有点风骚.

10, 和JAVA一样, 可以直接在类定义内初始化成员变量.

  

  以后想到继续补充, C++依旧充满魅力, 虽然关于它复杂度的抱怨不绝于耳, 但我还是非常肯定C++对项目可读性, 可维护性, 结构清晰性有极大的帮助.

 

  C++是一个多范式语言, 面向对象仅是它的一部分, 所以别抱有太多偏见, 存在即合理.

 

www.settledown.cn

 

posted @ 2013-08-06 20:37  cppisnotbad  阅读(414)  评论(0编辑  收藏  举报