码迷,mamicode.com
首页 > 其他好文 > 详细

primer看完了

时间:2016-07-21 00:35:13      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

放假这将近十天吧,终于把C++ Primer中文版第五版大致看完了,然而第四部分(高级主题)还是没有看,感觉那是需要有足够的项目经验再看。

另外,看一遍肯定不够,忘得也会很快,我十分确认今后还会很多次翻出这本 “圣经” 来翻阅。

这十天看的东西有:IO标准库设施,顺序容器,泛型算法,关联容器,智能指针与内存管理,拷贝控制,运算符重载,OO,模板。

应该说直接的体会就是,C++真的是一门无比庞大的语言,无处不在充实着各种各样的细节,各种各样的规则,甚至各种各样的规则也有很多的例外情况。

看完这些内容之后,我自我感觉对C++的认识深刻了不少,更认识到了语法语义的丰富性,学到了很多C++11的新特性:增加的顺序容器和关联容器、五种迭代器、

Lambda表达式、智能指针、右值引用、移动语义、继承的构造函数、完美转发等等,甚至很多以前不太懂的东西现在都清楚了。

但是还是有很多地方理解不深刻,例如,类型转换,静态动态绑定,虚函数机制,继承的深刻理解,模板的灵活使用,而且,最关键的就是我的项目经验太少,

可以说看书必须经过做项目才能理解更深刻,也会更熟练。

其中一个想的更清楚的关于合成默认构造函数的问题,正如《Inside the C++ Object Model》中所言,只有当需要的时候,编译器才会为类添加默认构造函数。

(机智的编译器。。)

上书中所说的四种外加类内初始化共五种情况吧,只有这五种情况编译器会添加默认构造函数(前提:没有显式定义构造函数)。

所谓添加默认构造函数,其实就是存在函数的调用过程,在这个过程中编译器完成一系列工作。

至于没有添加合成默认构造函数的类,依旧可以程序中这样写:MyClass *obj = new MyClass(),但是这其中并不会有默认构造函数的调用。编译器在观察这个类的结构之后,

发现不属于上述五种情况,于是不存在函数调用过程,因为没必要! 编译器速度快才是目标,怎么会有这种多余的函数调用过程!

另外,学习C++就是学习C++,不要把它和别的语言混在一起(Java/C#)。

今后一段日子内学习C++的规划如下:

技术分享

 

 

C++学习之路任重而道远,加油加油!

primer看完了

标签:

原文地址:http://www.cnblogs.com/niuxichuan/p/5690002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!