
Effective C++ 55 Meyers
文章平均质量分 91
工程实际遇到C++经典问题的解决方法。
高性能计算工程师
做一个极客!
展开
-
7. 模板和泛型编程 摘录
C++ templates的最初发展动机很直接:让我们得以建立“类型安全(type-safe)的容器”,如vector、list和map。最终人们发现,C++ templates机制自身是一部完整的图灵机:它可以被用来计算任何可计算的值。于是导出了模板元编程(template metaprogramming),创造出“在C++编译器内执行并与编译完成时停止执行”的程序。条款41: 了解隐式接口和编译器多态面向对象编程总是以显示接口(explicit interfaces)和运行期多态(runtime原创 2022-04-23 09:26:09 · 485 阅读 · 1 评论 -
6. 继承和面向对象设计 摘录
C++的OOP有可能与你原本习惯的OOP稍有不同:继承可以是单一继承或多重继承,每一个继承连接link可以是public、protected或private,也可以是virtual或non-virtual。然后成员函数的各个选项:virtual?或non-virtual?以及成员函数和其他语言特性的相互影响:缺省参数与virtual函数有什么交互影响?继承如何影响C++的名称查找规则?设计选项有哪些?如果class的行为需要修改,virtual函数是最佳选择么?本节解释C++各种不同特性的真正意义,也就原创 2022-04-11 16:12:53 · 848 阅读 · 0 评论 -
5. 实现 摘录
适当提出你的classes(class template)定义以及function(function template)声明,是花费最多心力的两件事。一旦正确完成它们,相应的实现大多直截了当。太快定义变量可能造成效率上的拖延。过度使用转型cast可能导致代码变慢又难维护,又招来微妙理解的错误;返回对象“内部数据之号码牌handle”可能会导致封装并留给客户danging handles;未考虑异常带来的冲击可能导致资源泄露和数据败坏;过热热心inlining可能导致代码膨胀;过度耦合原创 2022-03-24 10:53:29 · 1200 阅读 · 0 评论 -
4. 设计与声明 摘录
让接口容易被正确使用,不易被误用这一准则设立了一个舞台,让其他更专精的准则对付一大范围的题目,包括正确性、高效性、封装性、维护性、延展性、已经协议的一致性。原创 2022-03-23 14:25:30 · 954 阅读 · 0 评论 -
3. 资源管理 摘录
C++程序最常用的资源就是动态分配内存(如果你分配的内存却从来不曾归还它,会导致内存泄露)。常见的资源还包括文件描述器(file descriptors),互斥锁(mutex locks)、图形界面中的字型和笔刷、数据库连接、以及网络的sockets。不论哪一种资源,重要的是,当你不再使用它时,必须归还给系统。条款13: 以对象管理资源假设使用投资行为的程序库:class Investment {...};Investment* createInvestment(); // 返回指针,指原创 2022-03-22 09:33:53 · 697 阅读 · 0 评论 -
2. 构造/析构/赋值运算 摘录
几乎你写的每一个class都会有一个或多个构造函数、一个析构函数、一个copy assignment操作符。如果这些函数犯错,会导致影响深远且令人不愉快的后果,遍及你的整个class。条款05: 了解C++默默编写并调用那些函数当C++处理类时候,如果你自己没有声明构造和析构函数,赋值运算符,编译器就会为它声明。class Empty {};// 编译器就会声明class Empty{ Empty() {...}; Empty(const Empty&) {..原创 2022-03-21 11:15:31 · 847 阅读 · 0 评论 -
1. 让自己习惯C++ 摘录
今天的C++已经是多重泛型编程语言(multioaradigm prgramming language),一个同时支持过程形式(procedural)、面向对象形式(objected-orient)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogrmming)的语言。理解C++语言的最简单的方法是将C++视为一个由相关语言组成的联邦而非单一语言。在某个次语言中,各种守则与通例都倾向于简单、直观易懂、并且容易记住。C++最主要的次语言,总共只有四个:C语言。原创 2022-03-18 19:02:01 · 507 阅读 · 0 评论 -
0. 导读 摘录
本书的目的是使你的软件易理解、易维护、可移植、可扩充、高效、并且有着你所预期的行为。我所提出的忠告大致分为两类:一般性的设计策略,以及带有具体细节的特定语言特性。本书告诉你如何结合那些成分以便最终获得有效程序。本书告诉你如何回避编译器难以显露的问题。术语(Terminology)所谓声明式(declaration)是告诉编译器某个东西的名称和类型(type),但略去细节。extern int x; // 对象(object)声明式std:原创 2021-11-26 09:38:16 · 602 阅读 · 0 评论