看了一本C++11的书

看了一本C++11的书

  最近看了一本C++11的书,名字叫做《深入理解C++11C++11新特性解析与应用》。C++11已经出来这么久了,才想起来学习,实在是汗颜。本书名字叫做“深入”,但读完感觉也就是入门。对于使用过C++03/98,并想快速了解C++11新特性的人来说,这本书是不错的选择。

  这本书是C++标准委员会成员和IBM XL编译器开发者共同编写的,所以对于C++11的许多语言细节介绍的比较清楚。尤其是第2347章,每一个例子都很精细,甚至是过于精细。而对于56章,讲到智能指针和atomic/thread的时候,则相对粗略。本书的定位也是介绍C++11的新特性,而不是标准库。所以想深入学习标准库,还是得啃《C++标准库》(http://www.cppstdlib.com/)这本书的第二版。

  手动敲了书中的绝大部分代码,并使用GCC4.8.2编译,多数例子是没有问题的。只有少数例子,可能标准中有,但我这个版本的编译器还没有实现。作者写书的时间也比较早,当时好多功能还没有编译器实现。比如对于3.1节的继承构造函数,在同时使用继承构造函数和类的成员初始化列表的时候,感觉GCC的实现并不完整。以后这个地方注意一下。

  据说C++11新加了140个新特性,修正了C++03标准的600个缺陷。读此书,抄代码,不禁感慨:C++11真是一种变态的存在。好多次都想说,C++居然还能这么玩

  比如下面的代码,来自书中代码清单4-30。代码的功能是通过返回类型后置,实现模板中的类型推导功能。这要是没接触过C++11的程序员看到,完全不会想到这就是C++的代码。

#include <iostream>
using namespace std;

template <typename T1, typename T2>
auto Sum(const T1 &t1, const T2 &t2) ->decltype(t1 + t2) {
	return t1 + t2;
}
template <typename T1, typename T2 >
auto Mul(const T1 &t1, const T2 &t2) ->decltype(t1 * t2) {
	return t1 * t2;
}
int main(int argc, char const *argv[])
{
	auto a = 3;
	auto b = 4L;
	auto pi = 3.14;

	auto c = Mul(Sum(a,b),pi);
	cout << c << endl;
	return 0;
}


  今日的C++,可以说功能强大至极,学习周期也增长了不少。难怪Rob Pike在听完了同事介绍的C++11的新特性之后,整个人都不好了。转身自己创造了“大道至简”的Go语言。(Go语言之父谈Go:大道至简)

  最后,C++11还是要继续“深入”学习,已经入坑4年多,当继续在坑中挣扎。

  而这本书,看一遍是比较推荐的,看第二遍则没有必要了。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值