标签: Effective C++改善程序与设计的55个具体做法

10 篇文章

[笔记]Effective C++改善程序与设计的55个具体做法_第九章 杂项讨论
条款 53:不要轻忽编译器的警告。 请记住: 严肃对待编译器发出的告警信息。努力在你的编译器最高(最严苛)的警告级别下争取"无任何警告"的荣誉。 不要过度依赖编译器的告警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失。 条款 54:让自己熟悉包括 TR1 在内的标准程序库。…
[笔记]Effective C++改善程序与设计的55个具体做法_第八章 定制new和delete
条款 49:了解 new - handler 的行为。 当operator new抛出异常反应一个未满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个所谓的new-handler。设置错误处理的方式是调用set_new_handler。set_new_handler的标准库信息: namespace std { typedef void…
[笔记]Effective C++改善程序与设计的55个具体做法_第七章 模板与泛型编程
条款 41:了解隐式接口和编译期多态。 描述引入template带来的变化,在template世界中,多态会前移到编译阶段。 请记住 classes和templates都支持接口和多态。 对classes而言接口是显示的,以函数签名为中心。多态则是通过virtual函数发生于运行期。 对template参数而言,接口是隐式的,奠基于有效表达式。多态…
[笔记]Effective C++改善程序与设计的55个具体做法_第五章 实现
条款 26:尽可能延后变量定义的出现时间。 实际上就是代码规范中在使用的地方进行定义的另一种说法。目的是为了改善程序运行效率。 条款 27:尽量少做转型动作。 旧式转型: T(expression) // 将expression转型为T (expression)T // 将expression转型为T 两种方式无差别,C风格。 C++新式转型: c…
[笔记]Effective C++改善程序与设计的55个具体做法_第四章 设计与声明
条款 18:让接口容易被正确使用,不易被误用。 核心原则:接口设计的核心目标是实现「编译期拦截错误,运行期降低隐患」。借助类型系统、语义约束及自动化资源管理机制,将潜在错误在代码编写阶段彻底消除。 一、促进正确使用:保持一致性与直觉化 与内置类型行为对齐 案例:自定义Rational类时,为保证与int行为一致,需让a * b = c这一错误写法编…
[笔记]Effective C++改善程序与设计的55个具体做法_第三章 资源管理
常见的资源类型 内存、文件描述器(file descriptors)、互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、网络socks。 条款13: 以对象管理资源 普通示例: class Investment {...}; // "投资类型"继承体系中的root class // 投资类的具体创建,指向In…
[笔记]Effective C++改善程序与设计的55个具体做法_第二章 析构_构造_赋值运算
条款 05: 了解 C++ 默默编写并调用哪些函数 在 C++ 中,即使定义一个看似空无一物的类,编译器也会在需要时隐式生成一系列特殊成员函数。这些函数如同幕后工作者,支撑着对象的基础操作。 空类的默认函数生成机制 当定义class Empty {};这样的空类时,编译器会隐式声明以下特殊成员函数,且仅在被调用时才生成实际实现: class Emp…
[笔记]Effective C++改善程序与设计的55个具体做法_第一章 让自己习惯C++
条款 01:视 C++ 为一个语言联邦 C++ 并非单一范式的编程语言,而是由四种不同的 “次语言” 组成的联邦,每种次语言都有其独特的编程范式和规范: C 语言 以过程式编程为核心,包含基本语法、指针、数组、结构体和预处理器等内容。 规范:注重内存管理、手动资源释放,使用 malloc/free 进行内存操作。 面向对象的 C++ 涵盖类、继承、…
[笔记]Effective C++改善程序与设计的55个具体做法总览
让自己习惯 C++ 条款 01:视 C++ 为一个语言联邦。 条款 02:尽量以 const,enum,inline 替换 #define。 条款 03:尽可能使用 const。 条款 04:确定对象被使用前已被初始化。 构造 / 析构 / 赋值运算 条款 05:了解 C++ 默认编写并调用哪些函数。 条款 06:若不想使用编译器自动生成的函数,就…