Fork me on GitHub
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要:1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准。在2003年,一个小的“修复bug”版本被发布。然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C++标准预计在2009年被发布(虽然所有的工作很有可能在2007年底被完成)。直到现在,发布下一版C+ 阅读全文
posted @ 2017-04-23 18:21 HarlanC 阅读(290) 评论(0) 推荐(0) 编辑
摘要:许多程序员常常忽略编译器发出的警告。毕竟,如果问题很严重,它才将会变成一个error,不是么?相对来说,这个想法可能在其它语言是无害的,但是在C++中,我敢打赌编译器的实现者对于对接下来会发生什么比你有更好的理解。例如,下面的错误是每个人都时不时会犯的: 1. 你对警告的理解可能是错的 你的想法是用 阅读全文
posted @ 2017-04-22 18:55 HarlanC 阅读(272) 评论(0) 推荐(0) 编辑
摘要:1. 调用普通版本的operator new抛出异常会发生什么? Placement new和placement delete不是C++动物园中最常遇到的猛兽,所以你不用担心你对它们不熟悉。当你像下面这样实现一个new表达式的时候,回忆一下Item 16和Item 17: 两个函数会被调用:一个是调 阅读全文
posted @ 2017-04-22 12:59 HarlanC 阅读(489) 评论(0) 推荐(0) 编辑
摘要:Item 50中解释了在什么情况下你可能想实现自己版本的operator new和operator delete,但是没有解释当你实现的时候需要遵守的约定。遵守这些规则并不是很困难,但是它们其中有一些并不直观,所以知道这些规则是什么很重要。 1. 定义operator new的约定 1.1 约定列举 阅读全文
posted @ 2017-04-21 08:01 HarlanC 阅读(511) 评论(0) 推荐(1) 编辑
摘要:1. 自定义new和delete的三个常见原因 我们先回顾一下基本原理。为什么人们一开始就想去替换编译器提供的operator new和operator delete版本?有三个最常见的原因: 为了检测内存使用错误。不能成功delete new出来的内存会造成内存泄漏。在new出来的内存上使用多于一 阅读全文
posted @ 2017-04-19 08:00 HarlanC 阅读(362) 评论(0) 推荐(0) 编辑
摘要:1. new-handler介绍 当操作符new不能满足内存分配请求的时候,它就会抛出异常。很久之前,它会返回一个null指针,一些旧的编译器仍然会这么做。你仍然会看到这种旧行为,但是我会把关于它的讨论推迟到本条款结束的时候。 1.1 调用set_new_handler来指定全局new-handle 阅读全文
posted @ 2017-04-17 08:01 HarlanC 阅读(612) 评论(0) 推荐(1) 编辑
摘要:1. TMP是什么? 模板元编程(template metaprogramming TMP)是实现基于模板的C++程序的过程,它能够在编译期执行。你可以想一想:一个模板元程序是用C++实现的并且可以在C++编译器内部运行的一个程序,它的输出——从模板中实例化出来的C++源码片段——会像往常一样被编译 阅读全文
posted @ 2017-04-15 12:54 HarlanC 阅读(511) 评论(1) 推荐(1) 编辑
摘要:STL主要由为容器,迭代器和算法创建的模板组成,但是也有一些功能模板。其中之一叫做advance。Advance将一个指定的迭代器移动指定的距离: 从概念上来说,advance仅仅做了iter += d,但是advance并不是用这种方式实现的,因为只有随机访问迭代器支持+=操作。其他一些更加弱的迭 阅读全文
posted @ 2017-04-13 08:40 HarlanC 阅读(777) 评论(0) 推荐(2) 编辑
摘要:1. 问题的引入——将operator*模板化 Item 24中解释了为什么对于所有参数的隐式类型转换,只有非成员函数是合格的,并且使用了一个为Rational 类创建的operator*函数作为实例。在继续之前建议你先回顾一下这个例子,因为这个条款的讨论是对它的扩展,我们会对Item 24的实例做 阅读全文
posted @ 2017-04-11 08:38 HarlanC 阅读(467) 评论(0) 推荐(0) 编辑
摘要:智能指针的行为像是指针,但是没有提供加的功能。例如,Item 13中解释了如何使用标准auto_ptr和tr1::shared_ptr指针在正确的时间自动删除堆上的资源。STL容器中的迭代器基本上都是智能指针:当然,你不能通过使用“++”来将链表中的指向一个节点的内建指针移到下一个节点上去,但是li 阅读全文
posted @ 2017-04-10 08:36 HarlanC 阅读(421) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页