Effective C++ iterm1

本文探讨了C++由四种不同的“次语言”组成的观点,包括C、面向对象C++、模板C++和STL,并介绍了每种次语言的特点及高效编程准则。

条款一

--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.youkuaiyun.com/wallwind/article/details/6845639

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

转载于:https://www.cnblogs.com/scoyer/p/6306071.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值