Fork me on GitHub
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 异常安全在某种意义上来说就像怀孕。。。但是稍微想一想。在没有求婚之前我们不能真正的讨论生殖问题。 假设我们有一个表示GUI菜单的类,这个GUI菜单有背景图片。这个类将被使用在多线程环境中,所以需要mutex进行并发控制。 我们看一种PrettyMenu的changeBackground函数的可能实现 阅读全文
posted @ 2017-03-07 21:14 HarlanC 阅读(736) 评论(0) 推荐(1) 编辑
摘要: 假设你正在操作一个Rectangle类。每个矩形可以通过左上角的点和右下角的点来表示。为了保证一个Rectangle对象尽可能小,你可能决定不把定义矩形范围的点存储在Rectangle类中,而是把它放入一个辅助结构体中,Rectangle中声明一个指向它的指针就可以了: 1. 由返回指向对象内部数据 阅读全文
posted @ 2017-03-06 23:27 HarlanC 阅读(873) 评论(0) 推荐(0) 编辑
摘要: 此文是如下博文的翻译: https://herbsutter.com/elements-of-modern-c-style/ C++11标准提供了许多有用的新特性。这篇文章特别针对使C++11和C++98相比看上去像一门新语言的特性,因为: C++11的这些特性改变了书写C++代码的风格和习惯,也改 阅读全文
posted @ 2017-03-05 10:16 HarlanC 阅读(18969) 评论(0) 推荐(5) 编辑
摘要: C++设计的规则是用来保证使类型相关的错误不再可能出现。理论上来说,如果你的程序能够很干净的通过编译,它就不会尝试在任何对象上执行任何不安全或无意义的操作。这个保证很有价值,不要轻易放弃它。 不幸的是,casts颠覆了类型系统。它导致了各种麻烦的出现,一些很容易识别,一些却很狡猾(不容易被识别)。如 阅读全文
posted @ 2017-03-04 10:20 HarlanC 阅读(934) 评论(0) 推荐(0) 编辑
摘要: 1. 定义变量会引发构造和析构开销 每当你定义一种类型的变量时:当控制流到达变量的定义点时,你引入了调用构造函数的开销,当离开变量的作用域之后,你引入了调用析构函数的开销。对未使用到的变量同样会产生开销,因此对这种定义要尽可能的避免。 2. 普通函数中的变量定义推迟 2.1 变量有可能不会被使用到的 阅读全文
posted @ 2017-03-03 19:17 HarlanC 阅读(696) 评论(0) 推荐(0) 编辑
摘要: 1. swap如此重要 Swap是一个非常有趣的函数,最初作为STL的一部分来介绍,它已然变成了异常安全编程的中流砥柱(Item 29),也是在拷贝中应对自我赋值的一种普通机制(Item 11)。Swap非常有用,恰当的实现swap是非常重要的,与重要性伴随而来的是一些并发症。在这个条款中,我们将探 阅读全文
posted @ 2017-03-02 21:36 HarlanC 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 1. 将需要隐式类型转换的函数声明为成员函数会出现问题 使类支持隐式转换是一个坏的想法。当然也有例外的情况,最常见的一个例子就是数值类型。举个例子,如果你设计一个表示有理数的类,允许从整型到有理数的隐式转换应该是合理的。在C++内建类型中,从int转换到double也是再合理不过的了(比从doubl 阅读全文
posted @ 2017-03-01 08:14 HarlanC 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 1. 非成员非友元好还是成员函数好? 想象一个表示web浏览器的类。这样一个类提供了清除下载缓存,清除URL访问历史,从系统中移除所有cookies等接口: 许多用户想将这些动作一块执行,所以web浏览器为此可以提供一个函数: 当然,这个功能也可以通过非成员函数来提供,让它调用合适的成员函数就可以了 阅读全文
posted @ 2017-02-28 08:31 HarlanC 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 我们首先看一下为什么数据成员不应该是public的,然后我们将会看到应用在public数据成员上的论证同样适用于protected成员。最后够得出结论:数据成员应该是private的。 1. 为什么数据成员不能是public的? 为什么数据成员不能够是public的? 2.1 一致性 让我们从句法的 阅读全文
posted @ 2017-02-27 08:03 HarlanC 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 1. 问题的提出:要求函数返回对象时,可以返回引用么? 一旦程序员理解了按值传递有可能存在效率问题之后(Item 20),许多人都成了十字军战士,决心清除所有隐藏的按值传递所引起的开销。对纯净的按引用传递(不需要额外的构造或者析构)的追求丝毫没有懈怠,但他们的始终如一会产生致命的错误:它们开始传递指 阅读全文
posted @ 2017-02-26 19:06 HarlanC 阅读(2891) 评论(0) 推荐(2) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页