More C++ Idioms
Table of Contents
Note: synonyms for each idiom are listed in parentheses.
- Adapter Template TODO
- Address Of
Readed,没啥用 - Algebraic Hierarchy
Readed,没啥用 - Attach by Initialization
Readed,没啥用 - Attorney-Clie nt
有点用 - Barton-Nackman trick

- Base-from-Member

- Boost muta nt
有点意思,实现了一个reverse - Calling Virtuals During Initialization
有点意思,用template做的,但是和virtual函数没关系吧,并且必须要求static定义 - Capability Query

- Checked delete

- Clear-and-minimize

- Coercion by Member Template

- Computational Constructor

- Concrete Data Type

- Const auto_ptr

- Construct On First Use

- Construction Tracker

- Copy-and-swap
For operator=。 有用 - Copy-on-write

- Intrusive reference counting (Counted Body)

- Covariant Return Types TODO
- Curiously Recurring Template Pattern (CRTP)

- Non-intrusive reference counting (Detached Counted Body)
TODO - Empty Base Optimization (EBO)

- enable-if
有用,but VS.net not support - Envelope Letter
TODO - Erase-Remove
有用 - Execute-Around Pointer

- Exploding Return Type TODO
- Export Guard Macro TODO
- Expression-template
有用,表达式模板,用来延迟求值,生成树 - Fake Vtable TODO
- Fast Pimpl
TODO - Final Class
有用 - Free Function Allocators

- Function Object TODO
- Generic Container Idioms
有用,但不大 - Hierarchy Generation TODO
- Include Guard Macro

- Inline Guard Macro

- Inner Class

- Int-To-Type

- Interface Class

- Iterator Pair

- Making New Friends

- Metafunction

- Move Constructor

- Multi-statement Macro

- Member Detector

- Named Constructor

- Named External Argument TODO
- Named Loop (labeled loop)

- Named Parameter
有用, - Named Template Parameters TODO
- Nifty Counter (Schwarz Counter)

- Non-copyable Mixin

- Non-member Non-friend Function
TODO - Non-throwing swap

- Non-Virtual Interface (NVI, Public Overloaded Non-Virtuals Call Protected Non-Overloaded Virtuals)

- nullptr

- Object Generator

- Object Template TODO
- Parameterized Base Class (Parameterized Inheritance)

- Pimpl (Handle Body, Compilation Firewall, Cheshire Cat)

- Policy Clone (Metafunction wrapper)

- Policy-based Design TODO
- Polymorphic Exception

- Polymorphic Value Types
TODO - Recursive Type Composition TODO
- Requiring or Prohibiting Heap-based Objects
- Resource Acquisition Is Initialization (RAII, Execute-Around Object, Scoped Locking)

- Resource Return

- Return Type Resolver

- Runtime Static Initialization Order Idioms

- Safe bool

- Scope Guard

- Substitution Failure Is Not An Error (SFINAE)

- Shortening Long Template Names TODO
- Shrink-to-fit

- Small Object Optimization TODO
- Smart Pointer

- Storage Class Tracker TODO
- Tag Dispatching
TODO - Temporary Base Class

- Temporary Proxy

- The result_of technique TODO
- Thin Template

- Traits
TODO - Type Erasure TODO
- Type Generator (Templated Typedef)

- Type Safe Enum

- Type Selection

- Virtual Constructor

- Virtual Friend Function

More C++ Idioms的更多相关文章
- Kotlin Reference (二) Idioms
most from reference 一些常用操作 创建单例类 object 数据类data classList.Map.Array的简单操作Lazy延迟加载属性空类型?空类型表达式?..?:.?. ...
- English idioms
a hot potato : speak of an issue(mostly current) which many people are talking about and which is us ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 我的公司培训讲义(1):.NET开发规范教程
这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用.一起讨论.文中有若干思考题,对园友们是小菜一碟.另有设计模式讲义一篇,随后发布.博文上了首页,感谢博客园团队推荐,也感谢所有园友的 ...
- [转载]Google Guava官方教程(中文版)
原文链接 译文链接 译者: 沈义扬,罗立树,何一昕,武祖 校对:方腾飞 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] ...
- JCIP chap3 share objects
"同步"确保了操作的原子性执行,但它还有其它重要的方面:memory visibility.我们不但要确保当一个线程在使用一个对象的时候,其它线程不能修改这个对象,而且还要保证该线 ...
- matplotlib 高级用法实例--共享x轴
http://localhost:8888/notebooks/duanqs/matplotlib_advanced_example.ipynb 我不会弄呀, 刚才从matplotlib文档里吧示例用 ...
- java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
随机推荐
- JAVA基本类型和包装类
JAVA的包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表 ...
- 【Python】xml 解析
1. XML:指可扩展标记语言,是一种标记语言,用于存储数据和传输数据,但没有像HTML那样具有预定义标签,需要程序猿自定义标签 2. XML的解析:读取XML数据结构中的某些信息,比如读取书的属性 ...
- MySQL的架构与历史
MySQL的最主要特性是它的存储引擎架构,这种架构设计将查询处理以及其他系统任务和数据的存储/提取相分离. MySQL最上层服务是一些如连接处理,授权认证,安全等. MySQL的核心服务功能大部分度在 ...
- VMware虚拟机与主机共享文件夹
VMware也可以像docker容器那样"挂载"主机上的目录给虚拟机,在虚拟机上访问共享目录就跟访问自己的目录一样方便. 1. 虚拟机(M) -> 设置(S)-> 选项 ...
- WEBBASE篇: 第一篇, HTML知识1
HTML知识1 1,web概述 WEB就是互联网上的一种应用程序 - 网页程序: 程序结构: (1)C / S: C:Client 客户端:S:Server 服务器: (2)B / S: B:Brow ...
- [LeetCode&Python] Problem 292. Nim Game
You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...
- 动态开点线段树(陕西师范18k题)---get new skill
思想: 每次开点的时候:左右孩子都开辟新空间 注意懒惰标记tag: 因为会向下传递 提前在值中减去懒惰标记,避免重复计算 链接:https://www.nowcoder.com/acm/ ...
- 软件工程 week 01
一.安装与使用Git First项目地址: https://git.coding.net/kefei101/First.git 二.针对以下三个问题,作为大三新生,谈谈我的感想 问题1:你为什么选择计 ...
- break与continue关键字的使用
break与continue关键字的使用break:使用在switch-case中或者循环中 如果使用在循环中,表示:结束当前循环 public class V{ public static void ...
- c++期末考
1. 谁不及格? Problem:A Time Limit:1000ms Memory Limit:65535K Description 聪聪的班主任王老师最近有点忙,可是他又是一位非常细心的老师,每 ...