More Effective C++归纳总结
文章平均质量分 57
对More Effective C++进行归纳和总结,进一步透析C++原理与易错点,保证安全有效地使用C++。
Nick Coding
C++/Qt/Linux/Python stack. Base at Shenzhen, develop industrial design and simulation software.
展开
-
15 More Effectic C++ ——条款21/22(重载防止隐式类型转换/使用复合操作符)
1 看不见的隐式类型转换当构造函数只有一个,编译器会利用构造函数进行隐式类型转换。如下面所示:class UInt { public: UInt(); UInt(int value);}UInt a = 0, b(0), c = 1; // 隐式转换:int变成UInt类型UInt d = 1 + a; // 隐式类型转换这种隐式类型转换十分危险,当有多种类似"UInt(i...原创 2018-12-20 16:10:55 · 390 阅读 · 0 评论 -
16 More Effective C++ —— 条款23/24 (虚函数、虚基类、多继承、RTTI)
0 前序由于条款23只是针对iostream和stdio.h之间,进行运行效率的对比,此处不会详细展开。其宗旨是尽量使用C++的库,可以提高程序的执行效率和安全性。此篇将着重讨论条论24的内容。1 多态C++...原创 2018-12-25 08:22:18 · 298 阅读 · 0 评论 -
14 More Effective C++—条款20(返回值优化RVO)
0 序虽然书中一些条款使用四五页的篇幅进行详尽叙述,但是经过抽简的核心内容并没有太多。本专题针以“把书读薄”为目的,因此在后续的篇章中,做出以下修改:1 文章标题进一步简练,只给出关键性词语。2 每篇文章涉及条款不会超过5个,以方便读者对内容的总结概括。1 返回值优化下面类重载了“乘法”操作符,下面针对如下几种返回值类型进行讨论。最终引出高效正确的“乘法”返回值方案。class M...原创 2018-11-24 21:00:06 · 263 阅读 · 0 评论 -
13 More Effective C++—条款18/19(提前求值/临时对象的来源)
1 提前求值1 概念上一篇介绍了“延缓求值”——lazy evalute策略,其实质是:只有在真正需要数据的时候,才对计算进行求值。同时,常用的一种的策略是“马上求值”——eager evaluate,即只要出现计算表达式,就进行求值。上面两种方案都没有考虑到,一次性大规模计算会让用户长时间等待。基于此,本篇提出“超急求值”——over eager evaluate。它实质是一种分摊(也可以...原创 2018-11-16 09:01:14 · 245 阅读 · 0 评论 -
12 More Effective C++—条款16/17 (2/8原理与延缓求值)
80/20缓释估值原创 2018-11-04 10:35:12 · 249 阅读 · 0 评论 -
11 More Effective C++—条款14/15(有效使用异常限定符/异常处理的成本)
1 异常限定符与unexpected调用如下面的代码所示,标识符throw()即为异常限定符。异常限定符标识了函数可以抛出的异常类型。当throw后面的括号内容为空,表示该函数不抛出任何异常。class Exception { public: const char* what() throw() const; // 该函数不抛出任何异常 void doSomething() thro...原创 2018-10-31 09:22:29 · 204 阅读 · 0 评论 -
10 More Effective C++—条款13(catch异常引用的好处)
1 前言其实本篇文章应与前一篇文章合写,但是,鉴于上一篇文章文字较多,已经基本成稿,因此,关于为什么使用catch reference的讨论,留在本章进行讨论。同样,本文章将依照书中顺序进行讨论2 异常指针传递带来的麻烦上篇文章介绍了使用指针进行异常传递的方法,如下面3中形式。形式1:一旦离开局部变量的作用域,局部变量就会被销毁,此种方式是错误的。形式2:无法时刻谨记,同时长期保存一...原创 2018-10-25 13:51:06 · 251 阅读 · 0 评论 -
9 More Effective C++—条款12(异常的原理细节)
1 抛出的异常1 异常与函数调用抛出异常与传递一个参数、调用一个虚函数有许多类似点:1,某个类对象被接受2,被接受的类对象可以选择不同的接收端,从而实现多态。3,可以通过by-value, by-reference, by-pointer三种方式来传递类对象。但是,实际上调用函数传递参数,与try中抛出异常,并被catch捕捉异常时完全不同的。2 被抛出的对象总是一个副本每当抛...原创 2018-10-25 09:55:47 · 399 阅读 · 1 评论 -
7 More Effective C++—条款10(构造函数内阻止内存泄漏)
1 提出问题原创 2018-10-21 11:35:01 · 274 阅读 · 0 评论 -
8 More Effective C++—条款11(析构函数内阻止异常流出)
1 提出问题原创 2018-10-22 12:55:17 · 225 阅读 · 0 评论 -
6 More Effective C++—条款9(局部变量的destructor防止内存泄漏)
0 生活鸡汤偶然看到一篇文章,每天前进一点点,积累下来,人生就能有所改变。已经有一段时间没有更新这个系列,今天争取再往前走一点点。1 提出问题宠物医院提供收养服务,其中,主要收养对象是小狗(Dog)小猫(Cat)。收养需要走一定流程,具体流程我们不必关心。上面的情景可用下面代码描述。class Animal { public: virtual void processAdoption...原创 2018-10-20 12:30:46 · 521 阅读 · 0 评论 -
5 More Effective C++—条款8:(operator new 和 new operator)
1 两种new的区别和联系C++中的操作符new在执行下面代码时,做了如下两件事。这种操作符叫做"new operator"。对于开辟空间这部分,new operator实际调用了operator new操作符。1 调用operator new操作符,开辟内存空间。2 调用构造函数,初始化内存空间。class MyClass {}MyClass *my = new MyClass...原创 2018-10-07 17:01:04 · 1035 阅读 · 0 评论 -
4 More Effective C++—条款7(切勿重载&&,||和逗号操作符)
1 &&,|| 和逗号操作符1, && 和 || 操作符具有“短路”特征,即若操作符左侧操作数出现状况,右侧操作数便不会求值:(1)&& 左侧操作数为false,右侧操作数不求值,整个表达式值为false。(2)|| 左侧操作数为true, 右侧操作数不求值,整个表达式值为true。2,逗号操作符“,”自左向右按顺序求值。如for (int...原创 2018-10-07 16:01:08 · 274 阅读 · 0 评论 -
3 More Effective C++—条款6(自定义自增/自减操作符)
1 重载操作符C++允许用户自定义自增、自减操作符。两种操作符都有对应的前置、后置形式。如下所示:index++ // 返回原值,并自增++index // 自增,并返回新值index----index重载操作符如下代码所示。由于前置(prefix)和后置(suffix)两种形式都没有参数,为了区别两种重载,需要为后置操作符补一个int类型参数,且编译器默认该参数值为0。同时,一些...原创 2018-10-07 11:57:39 · 208 阅读 · 0 评论 -
2,More Effective C++——条款5(谨慎使用定制“类型转换函数”)
1 隐式类型转换C++中允许如下3种形式的隐式类型转换:1. 基本类型隐式类型转换:int a = 10;double b = a;2. 单参数构造构造函数class Name { // 可以将char* 类型转换成Name类型 Name(const char* str) {}};class Apple { // 可以将int类型转换成Apple类型 Apple(int a,...原创 2018-10-06 12:41:33 · 372 阅读 · 0 评论 -
1,More Effective C++——基础议题(条款1—4)
条款1: pointer和reference0 指针(pointer)C++中的指针可以如下形式进行定义:int number = 0;int *ptr = &number; // 可修改number值,也可以改变指针指向。const int *ptr0 = &number; // 不能修改number值,可改变指向int const *ptr1 = &numb...原创 2018-10-05 17:39:24 · 237 阅读 · 0 评论 -
0, More Effective C++——导言
1.序言上周搬家,抱着两大摞,约50多斤30几本书,既感到知识的重量,又发觉自己真的是买书豪情万丈,看书心力交瘁。于是做了一个勇敢的决定——把这些书看完,看完一本送人一本,争取一本都不留。由于读书笔记和读书同时进行,因此前面章节内容可能认知较浅显,后面内容会有融汇贯通的效果。因此,在每本书读完后,我计划用一两篇文章对整本书进行深入提炼和发掘,以求“一本书变成一页纸”效果。因为最近写程序...原创 2018-10-05 17:39:55 · 316 阅读 · 0 评论