Effective C++ iterm1

条款一

--17/01/14

这个条款主要讲的是怎么对待C++?

将C++作为一种单一语言的做法并不明智,我们应该将C++看作是多种次语言组合成的一个集合。书中概括了其中的次语言有四种:

(1)C

毕竟是从C移植过来的,C++仍然以C为基础。

(2)面向对象C++

这一部分包含了大部分面向对象设计语言的特性,拥有以类为主的编程思路,包含面向对象三大特性:封装,继承,多态。

(3)模板C++

C++的泛型编程部分。Template的威力强大,提供了一种新的编程模式。

(4)STL

实际上是泛型编程的一个优秀的例子,是template程序库。

 

C++是由这四个次语言组成的联邦政府,这四个部分都要遵守相应的高效编程准则,这就意味着你利用C++进行高效编程要明确自己使用的是C++的哪一部分?

 

1、内置类型和STL中迭代器和函数对象都是pass by value比pass by reference高效

2、用户自定义类型的话应该使用pass by reference to const更好,不仅可以使得程序效率变高,而且能够避免切割问题。

 

为什么内置类型反而pass by value效率更高呢?

所谓内置类型就是最基本的类型,例如int,double等,在汇编里面,如果你传的是值的话,就会把相应的值压入栈中,然后在取出来;而如果传的是引用,也就是指针的话,那么就将指针压入栈中,然后再到相应的地址读取出值。pass by reference就是多了后面还要去到相应的位置读取值的过程。原因不仅如此,后面学习条款的时候相信会对这个问题更有进一层的回答。

 

参考资料:

http://blog.csdn.net/wallwind/article/details/6845639

http://www.myexception.cn/cpp/1641248.html

posted @ 2017-01-19 12:07  scoyer  阅读(175)  评论(0编辑  收藏  举报