C++11初探

这几天把C++ 11的语言特性刷了一下(为毛这上面的图标好丑。。),总结一下也说说自己的一点看法。

个人感觉C++11确实强大了很多,而且从语言本身上可以看到很多其他语言的影子,比如C#、Jave, 甚至脚本语言,效率和应用场合也多了很多,难怪要这么多年才出炉,慢工出细活啊。

1 效率和性能上说:

初始化的方式变化感觉挺大的。移动构造和继承构造,右值引用,完美转发,花括号初始化,差不多这几个特性都优化了分配和构造的过程。以前老觉得copy ctor传值搞出个临时变量很烦躁,分析来分析去,现在省了不少事情。

 2 类型推导机制的出现

这有点像脚本语言的赶脚。类型判别应该是OO的基石了,现在这些工作全部从AP放到了compiler,确实算是很大的进步。auto和decltype分别有对应的应用场合,而且都是编译时就能决定了(如果运行时决定会怎样。。)。

3 硬件和并行

硬件中可能有并行操作,但是并行不一定只用于硬件。以前的原子操作都用汇编来玩,现在算是升级了。memory_order就是防止各种读写操作的乱序,应该可以这么理解。不过感觉对于并行的提供从语言级别还是有点细粒度,控制基本都要开发人员来参与。并行技术等有空刷一遍再考虑吧。

4 函数式编程的加入

lambda在其他语言里都有了java C#。C++加入也是在所难免。很奇怪为什么一个语言要实现这么多不同的编程范式。。以前不是说有面向方面的编程么?不知道属于不属于范式中的一种。lambda写的代码很简洁也很漂亮,就是要注意是不是const。毕竟lambda是闭包类(为什么要设计成闭包类??)

5 泛型的扩展

模板类终于越来越强大了。看STL的时候就很疑惑,bind2nd这样的adapter为什么就只能支持两个参数。终于变成可变长的了。递归式的写法也更加的多了,只是记得那三个点放在什么标示符的后面。说到递归,突然想到constexpr,这样的template meta program还是蛮有意思的。以后写个template的总结再说了。


还有一些其他的特性,比如POD,unicode, attribute之类的,感觉也和其他的语言差不多,或者从标准库里面的一些内容作为了C++11的新增内容。基本都是基于效率和性能,便捷性的考虑的吧。


有个问题一直很奇怪,为什么C++不能提供反射呢?C#有.net平台,Java有jvm,C++就只有编译器的支持了,估计编译器那帮人不想惹这么多事情吧。。估计觉得typeid已经够了。。


总的来说,C++11看起来非常的好用,写出的代码应该也是很简洁的。有空多写写~~ VS2010已经开始支持了的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值