瓦尔登湖读书摘录(2) 假如我们醒来并没有过上比睡前更崇高的生活, 那么白天也就没什么好期待的了. 人要是不相信在喧嚣的白日之前, 有者更神圣,更绚丽的时刻, 那么他对生活肯定已经感到绝望, 而他所走的人生之路肯定是江河日下, 越来越黑暗的. 只要我清醒着, 心中有光明, 那就是早晨. 我们必须学会再次苏醒, 并保持着清醒的状态, 但要借助的不是某些生硬的措施, 而是对黎明的无限期待, 这是在我们睡得最熟时也会也 2024-12-07 #阅读 #瓦尔登湖
Effective C++ 条款28 避免返回handles指向对象内部成分 条款28 : 避免返回handles指向对象内部成分让我们先来明确本条款中的两个概念 : handle : 即句柄, 号码牌, 可以理解为各种指针, 引用, 迭代器. 内部成分 : private成员变量和成员函数. 有了上面两个概念, 就可以比较直观地理解本条款了, 不过在通读完本条款后, 本条款虽说是避免返回handles指向对象内部成分, 但是其实内容着重在解释在必须返回handles 2024-12-07 #Effective C++
Effective C++ 条款27 类型转换 条款27 : 尽量少做转型动作 优良的C++代码很少使用转型, 但是要完全摆脱它们又太过不切实际, 我们应当保证”类型错误”绝无可能发生. 本条款在了解各种转型动作的前提下, 指出了一些有风险的转型操作及其解决方法. 我们先来回顾一下类型转换 : 旧式C风格转型12(T)expression;T(experssion); 新式转型1234static_cast<T>(expres 2024-12-06 #Effective C++
Effective C++ 条款26 尽可能延后变量定义式的出现时间 条款26 : 尽可能延后变量定义式的出现时间只要你定义了一个变量, 并且其类型带有构造函数或析构函数, 那么当程序控制流到达变量定义式时, 你便得承担构造成本; 当变量离开作用域时, 你便得承担析构成本. 本条款希望我们避免定义变量但最终并未使用的情况, 不要白白浪费构造和析构的成本. 先来看看什么情况下会出现定义变量但最终并未使用 : 这是一个密码加密的函数, 由于密码本身不能修改, 所以要定 2024-12-05 #Effective C++
Effective C++ 条款25 考虑写出一个不抛异常的swap函数 条款25 : 考虑写出一个不抛异常的swap函数 swap 是一个有趣的函数, 原本它只是STL的一部分, 而后成为了异常安全性编程中的脊柱, 有关异常安全性我在条款11中介绍过, 在之后的条款29中也将着重着墨. 由于swap相当有用, 适当的实现非常重要, 好的swap设计可以带来非凡的效率提升. swap顾名思义, 意为将两对象的值彼此赋予对方, 在现代标准库中的实现是这样 : 1234 2024-12-04 #Effective C++
Effective C++ 条款24 类型转换与non-member函数 条款24: 若所有参数皆需类型转换, 请为此采用non-member函数 虽然令classes支持隐式类型转换是一个坏主意, 但常常有许多意外出现, 有些类型之间的关联实在太强, 我们经常想把它们放在一起用, 例如支持int类型隐式转换为Rational(有理数), 当对便利性的需求非常强烈之后, 也许支持隐式类型转换也未必是坏事. 书中给出了一个Rational类, 它可以由int 2024-12-03 #Effective C++
瓦尔登湖读书摘录(1) 人只有想起自己的无知才能有长进, 但他如此忙碌于运用自己已有的知识, 又如何能想得起来呢? 受制于对自己的看法, 受制于他通过自己行动所赢得的名誉. 大家好像都选择了相同的生活模式, 好像这种模式是在他们清醒时做出的选择, 然而其实他们并不认为还有其他模式可选, 但聪敏而健康的人记得太阳每天都会升起. 所有的改变都是奇迹, 但这种奇迹时时刻刻都在发生. 在当前的境况中找到他们的勇气和灵感 2024-12-02 #阅读 #瓦尔登湖
Effective C++ 条款22-23 封装性相关 条款22 : 将成员变量声明为private本条款中, 作者明确声明, 如果没有必要的原因, 务必将成员变量声明为private, 而非public/protected, 并苦口婆心地列举出了非常多使用private的优势, 让我们逐一阅览 : 保证了语法一致性当客户通过对象调用时, 如果将成员变量声明为private, 那么就省去了客户思考要不要加小括号的问题, 只要无脑加括号就行了. 对 2024-12-02 #Effective C++
Effective C++ 条款21 必须返回对象时, 别妄想返回其reference 条款21 : 必须返回对象时, 别妄想返回其reference 当程序员领悟了条款20所讲的pass-by-value的种种效率问题之后, 往往会变成十字军战士, 一心一意根除pass-by-value的存在, 然而这却会让他们犯下一些致命的错误, 通过本条款让我们来了解. 阅读完本文章, 我更倾向于把本条款解释为 : 必须返回新对象时, 别妄想返回其reference. 这样子会更便于理解 2024-12-01 #Effective C++
Effective C++ 条款20 宁以pass-by-reference-to-const替换pass-by-value 条款20 : 宁以pass-by-reference-to-const替换pass-by-value 本条款将告诉我们函数传参时的最佳策略. 我们都知道, pass-by-value(传值传参)是一个费时费力的过程, 它会直接复制一个原件的拷贝, 如果是自定义类就会调用一次拷贝构造来实现复制, 函数结束时还要额外调用一次析构函数, 我们会很有意愿去削减这方面的花销. 相信我们在别处的很多函数中都 2024-11-30 #Effective C++