Fork me on GitHub
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要: STL主要由为容器,迭代器和算法创建的模板组成,但是也有一些功能模板。其中之一叫做advance。Advance将一个指定的迭代器移动指定的距离: 从概念上来说,advance仅仅做了iter += d,但是advance并不是用这种方式实现的,因为只有随机访问迭代器支持+=操作。其他一些更加弱的迭 阅读全文
posted @ 2017-04-13 08:40 HarlanC 阅读(1157) 评论(0) 推荐(2) 编辑
摘要: 1. 问题的引入——将operator*模板化 Item 24中解释了为什么对于所有参数的隐式类型转换,只有非成员函数是合格的,并且使用了一个为Rational 类创建的operator*函数作为实例。在继续之前建议你先回顾一下这个例子,因为这个条款的讨论是对它的扩展,我们会对Item 24的实例做 阅读全文
posted @ 2017-04-11 08:38 HarlanC 阅读(789) 评论(0) 推荐(0) 编辑
摘要: 智能指针的行为像是指针,但是没有提供加的功能。例如,Item 13中解释了如何使用标准auto_ptr和tr1::shared_ptr指针在正确的时间自动删除堆上的资源。STL容器中的迭代器基本上都是智能指针:当然,你不能通过使用“++”来将链表中的指向一个节点的内建指针移到下一个节点上去,但是li 阅读全文
posted @ 2017-04-10 08:36 HarlanC 阅读(732) 评论(0) 推荐(0) 编辑
摘要: 1. 使用模板可能导致代码膨胀 使用模板是节省时间和避免代码重用的很好的方法。你不需要手动输入20个相同的类名,每个类有15个成员函数,相反,你只需要输入一个类模板,然后让编译器来为你实例化20个特定的类和300个你需要的函数。(只有在被使用的情况下类模版的成员函数才会被隐式的实例化,所以只有在30 阅读全文
posted @ 2017-04-07 22:01 HarlanC 阅读(996) 评论(0) 推荐(0) 编辑
摘要: 1. 问题的引入——派生类不会发现模板基类中的名字 假设我们需要写一个应用,使用它可以为不同的公司发送消息。消息可以以加密或者明文(未加密)的方式被发送。如果在编译阶段我们有足够的信息来确定哪个信息会被发送到哪个公司,我们可以使用基于模板的解决方案: 这会工作的很好,但是假设有时候我们需要在发送信息 阅读全文
posted @ 2017-04-04 18:20 HarlanC 阅读(751) 评论(0) 推荐(0) 编辑
摘要: 1. class和typename含义相同的例子 问题:在下面的模板声明中class和typename的区别是什么? 答案:没有任何区别。当声明一个模板类型参数时,class和typename意味着相同的事情。一些程序员喜欢使用class,因为容易敲打。其他的(包括我)更加喜欢使用typename, 阅读全文
posted @ 2017-04-03 08:15 HarlanC 阅读(1134) 评论(1) 推荐(0) 编辑
摘要: 1. 显示接口和运行时多态 面向对象编程的世界围绕着显式接口和运行时多态。举个例子,考虑下面的类(无意义的类), 考虑下面的函数(同样没有意义), 对于doProcessing中的w,我们可以这样说: 因为w被声明为Widget类型,w必须支持Widget接口。我们可以在源码中搜寻这个接口(例如,在 阅读全文
posted @ 2017-03-30 22:56 HarlanC 阅读(841) 评论(0) 推荐(0) 编辑
摘要: 1. 多继承的两个阵营 当我们谈论到多继承(MI)的时候,C++委员会被分为两个基本阵营。一个阵营相信如果单继承是好的C++性质,那么多继承肯定会更好。另外一个阵营则争辩道单继承诚然是好的,但多继承太麻烦,而不值得去使用它。在这个条款中,我的主要目标是让你明白多继承的这两个观点。 2. 从多个基类中 阅读全文
posted @ 2017-03-29 21:23 HarlanC 阅读(970) 评论(0) 推荐(0) 编辑
摘要: 1. private 继承介绍 Item 32表明C++把public继承当作”is-a”关系来对待。考虑一个继承体系,一个类Student public 继承自类Person,如果一个函数的成功调用需要从Student到Person的隐式转换,这时候“is-a”关系就出现了。对于一部分实例,使用p 阅读全文
posted @ 2017-03-28 21:14 HarlanC 阅读(895) 评论(0) 推荐(1) 编辑
摘要: 1. 什么是组合(composition)? 组合(composition)是一种类型之间的关系,这种关系当一种类型的对象包含另外一种类型的对象时就会产生。举个例子: 在这个例子中,Person对象由string,Address和PhoneNumber对象组成。对于程序员来说,术语组合(compos 阅读全文
posted @ 2017-03-27 20:36 HarlanC 阅读(956) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页