标签:
放假这将近十天吧,终于把C++ Primer中文版第五版大致看完了,然而第四部分(高级主题)还是没有看,感觉那是需要有足够的项目经验再看。
另外,看一遍肯定不够,忘得也会很快,我十分确认今后还会很多次翻出这本 “圣经” 来翻阅。
这十天看的东西有:IO标准库设施,顺序容器,泛型算法,关联容器,智能指针与内存管理,拷贝控制,运算符重载,OO,模板。
应该说直接的体会就是,C++真的是一门无比庞大的语言,无处不在充实着各种各样的细节,各种各样的规则,甚至各种各样的规则也有很多的例外情况。
看完这些内容之后,我自我感觉对C++的认识深刻了不少,更认识到了语法语义的丰富性,学到了很多C++11的新特性:增加的顺序容器和关联容器、五种迭代器、
Lambda表达式、智能指针、右值引用、移动语义、继承的构造函数、完美转发等等,甚至很多以前不太懂的东西现在都清楚了。
但是还是有很多地方理解不深刻,例如,类型转换,静态动态绑定,虚函数机制,继承的深刻理解,模板的灵活使用,而且,最关键的就是我的项目经验太少,
可以说看书必须经过做项目才能理解更深刻,也会更熟练。
其中一个想的更清楚的关于合成默认构造函数的问题,正如《Inside the C++ Object Model》中所言,只有当需要的时候,编译器才会为类添加默认构造函数。
(机智的编译器。。)
上书中所说的四种外加类内初始化共五种情况吧,只有这五种情况编译器会添加默认构造函数(前提:没有显式定义构造函数)。
所谓添加默认构造函数,其实就是存在函数的调用过程,在这个过程中编译器完成一系列工作。
至于没有添加合成默认构造函数的类,依旧可以程序中这样写:MyClass *obj = new MyClass(),但是这其中并不会有默认构造函数的调用。编译器在观察这个类的结构之后,
发现不属于上述五种情况,于是不存在函数调用过程,因为没必要! 编译器速度快才是目标,怎么会有这种多余的函数调用过程!
另外,学习C++就是学习C++,不要把它和别的语言混在一起(Java/C#)。
今后一段日子内学习C++的规划如下:
C++学习之路任重而道远,加油加油!
标签:
原文地址:http://www.cnblogs.com/niuxichuan/p/5690002.html