文档章节

[C++ 学习笔记 7] Effective C++ 条款 1-4

UMU
 UMU
发布于 2017/01/29 17:28
字数 541
阅读 46
收藏 0
C++

第一章 让自己习惯 C++

1、视 C++ 为一个语言联邦

    C++ 是个多重范型编程语言:面向过程、面向对象、函数式、泛型、原编程式,所以他的规约很多,记住四个次语言可以帮助了解 C++:C、Object-Oriented C++、Template C++、STL。

2、尽量以 const、enum、inline 替换 #define

    他们的根本差别是:前三者是编译器处理的,最后者是预处理器处理的。enum 比 const 更像 #define,比如说 const 定义通常可以求地址或引用,而 enum 不行。

    inline 函数比宏多了类型安全和可预料性,一个例子是讲 i++ 或 ++i 当参数传给宏时,可能导致 ++ 了多次,而传给 inline 函数则不会。

3、尽可能使用 const

    const 可以帮助编译器侦测错误的用法。例如,令函数返回一个常量值,往往可降低因调用者错误而造成的意外,而又不至于放弃安全性和高效性。比如当比较语句少写了一个 = 时:

if (a * b = c) ... // 本意是 ==,结果导致在 a * b 的临时变量上调用 operator=

    如果 operator= 返回值不是 const 会导致以上错误代码编译通过!

    bitwise constness 认为 const 成员函数不可以更改对象内任何 non-static 成员变量,logical constness 主张在调用者侦测不出的前提下可以修改对象内某些 bits,可以利用 mutable 释放掉 non-static 成员变量的 bitwise constness 约束。

    在 const 和 non-const 成员函数中避免重复的做法是:让 non-const 成员函数调用 const 成员函数,而不要反过来。

4、确定对象被使用前已被初始化

    为内置型对象进行手工初始化,因为 C++ 不保证初始化它们。

    构造函数最好使用成员初值列,而不是赋值操作,排列顺序最好和声明次序想同。

    为避免跨编译单元的初始化次序问题,用 local static 对象代替 non-local static 对象,参考 Singleton 模式常见实现。

XClass& GetInstance()
{
    static XClass instance;
    return instance;
}

 

© 著作权归作者所有

UMU

UMU

粉丝 119
博文 112
码字总数 44043
作品 0
厦门
程序员
私信 提问
Effective C++ 笔记(1):视C++为语言联邦

条款一(clause 1) 将C++视为语言联邦:提出了一种将C++分为四种不同次语言的观念,四种次语言分别是: 1、C语言,面向过程的语言,C++完全向下兼容C,在C++中单纯使用C语言的语法除了遵守的一...

oldpan
2017/09/10
0
0
C++各阶段学习书目

1. 入门 Lippman的《Essential C++》 顾名思义,这本书是很短小精悍的。通过这本书,可以对C++的最常用和重要的特性有全面的了解,并对C++的全貌有一个概念。虽然这远远不够,但就是这样的书...

晨曦之光
2012/04/24
433
1
C++ 书籍大汇

C++ 书籍大汇 C++ 书籍大汇 语言基础入门: 1. C++ Primer 《C++入门》(通常不用中文名) by Stanley B. Lippman 有第三版和第四版,如其名,是C++入门的不二选择,是全面广泛的参考书目,内...

长平狐
2012/09/20
285
0
stl-stable_sort源码学习笔记

前几天,一个新同事前来询问算法stl-stablesort的情况。由于离上次研读stl源码时间久已(两三年前的事儿了),有些细节笔记模糊了。所以就找了sgi-stl和ms-stl俩版本,重新复习一遍其中的stl...

huangjunkun
2011/11/07
1K
0
学习C++的50条,谨以送给C++的粉丝们

1.把C++当成一门新的语言学习(和C没啥关系!真的);   2.看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差);   3.看《The C++ Programming Language》(这...

地瓜儿
2013/01/11
1K
7

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
10
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部