Effective C++
文章平均质量分 81
stt2019
这个作者很懒,什么都没留下…
展开
-
【Effective C++】第一章 让自己习惯C++
第一章 让自己习惯C++条款01:视C++为一个语言联邦为了理解C++,你必须人生的主要次语言:C。说到底C++仍以C为基础。区块(blocks)、语句(statements)、预处理器(preprocessor)、内置数据类型(built-in data types)、数组(arrays)、指针(pointers)等都来自C。许多时候C++对问题的揭法其实不过就是高级C的解法,但当你以C++内的...原创 2018-05-20 17:00:51 · 208 阅读 · 0 评论 -
【Effective C++】第二章 构造/析构/赋值运算(上)
第二章 构造/析构/赋值运算条款05:了解C++默默编写并调用哪些函数什么时候empty class(空类)不再是个empty class?当C++处理过它后。如果没自己的声明,编译器就会为它声明一个copy构造函数、一个copy assignment操作符和一个析构函数。如果没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public且inline。因此,如果...原创 2018-05-21 10:08:16 · 238 阅读 · 0 评论 -
【Effective C++】第二章 构造/析构/赋值运算(下)
条款09:决不在构造和析构过程中调用virtual函数 本条款重点:你不应该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的效果。如下例,假如有个class继承体系,用来塑造股票交易如买进、卖出的订单等等,这样的交易一定要经过审计,所以每当创建一个交易对象,在审计日志中也需要创建一笔适当的记录: class Transaction{ ...原创 2018-05-21 22:43:40 · 194 阅读 · 0 评论 -
【Effective C++】第三章 资源管理
第三章 资源管理条款13:以对象管理资源假设我们使用一个用来塑模投资行为的程序库,其中各式各样的投资类型继承自一个root class Investment: class Investment{……};进一步假设,这个程序库通过一个工厂函数供应我们某特定Investment对象: Investment* createInvestment();createInvestment的调用端使用了函数返...原创 2018-05-23 15:49:10 · 177 阅读 · 0 评论 -
【Effective C++】第五章 实现(下)
条款29:为“异常安全”而努力是值得的当异常抛出时,带有异常安全的函数会:不泄露任何资源(条款13:资源管理类)不允许数据败坏异常安全函数提供以下三个保证之一:基本承诺:如果异常被抛出,程序内的任何事物仍然保持在有效状态下。没有任何对象或数据结构会因此而败坏,所有对象都处于一种内部前后一致的状态。然而程序的现实状态不可预料。 强烈保证:如果异常被抛出,程序状态不改变。 不抛掷保证:承诺绝不抛出异常...原创 2018-06-29 16:02:04 · 237 阅读 · 0 评论 -
【Effective C++】第四章 设计与声明(上)
第四章 设计与声明条款18:让接口容易被正确使用,不易被误用考虑客户可能做出什么样的错误。除非有好理由,否则应该尽量令你的types的行为与内置types一致。 tr1::shared_ptr有一个特别好的性质是:它会自动使用它的“每个指针专属的删除器”,因而消除另一个潜在的客户错误:所谓的“cross-DLL problem”。这个问题发生于“对象在动态连接程序库(DLL)中被new创建,却在另...原创 2018-06-10 22:31:41 · 210 阅读 · 0 评论 -
【Effective C++】第四章 设计与声明(下)
条款22:将成员变量声明为private如果成员变量不是public,客户唯一能够访问对象的办法就是通过成员函数。如果public接口内的每样东西都是函数,客户就不需要再打算访问class成员时迷惑地试着记住是否该使用小括号。 使用函数可以让你对成员变量的处理有更精确的控制。如果你令成员变量为public,每个人都可以读写它,但如果你以函数取得或设定其值,你就可以出现“不准访问”、“只读访问”以及...原创 2018-06-18 22:21:01 · 224 阅读 · 0 评论 -
【Effective C++】第五章 实现(上)
第五章 实现条款26:尽可能延后变量定义式的出现时间只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并为被使用,仍需耗费这些成本,所以应该尽量避免这种情形。 考虑下面这个函数,它计算同学密码的加密版本后而返回,前提是密码够长。如果密码短,函数会丢出一个异常,类型为log...原创 2018-06-27 22:26:46 · 202 阅读 · 0 评论