
Effective C++
文章平均质量分 93
onlyshi
这个作者很懒,什么都没留下…
展开
-
Item 37:绝不重新定义继承而来的缺省参数值
Item 37:绝不重新定义继承而来的缺省参数值原创 2016-04-08 10:01:42 · 1205 阅读 · 0 评论 -
Item 08:别让异常逃离析构函数
Item 08:别让异常逃离析构函数- 析构函数绝对不要抛出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。 - 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构原创 2016-10-19 19:16:50 · 364 阅读 · 0 评论 -
Item 07:为多态基类声明virtual析构函数
C++指出,当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,其结果是未定义的——实际执行时通常发生的是对象的derived成分没有被销毁,于是造成一个诡异的“局部销毁”的现象,这可是造成资源泄露、破坏数据结构、在调试器上浪费许多时间的绝佳必备毒药。原创 2016-10-17 21:32:17 · 340 阅读 · 0 评论 -
Item 05:了解C++默默编写并调用哪些函数
Item 05: Know waht functions C++ silently writes and calls.空类并不一定是空的什么时候空类不再是个空类呢?答案是:当C++处理过之后。如果你自己没声明,编译器就会为它声明(编译器版本的)一个拷贝构造函数、一个赋值操作符和一个析构函数。此外如果你没声明任何构造函数,编译器也会为你声明一个默认构造函数。所有这些函数都是public且inline的原创 2016-04-18 15:12:48 · 400 阅读 · 0 评论 -
Item 03:尽可能使用const
Item 03: Use const whenever possible关键字constconst允许你指定一个语义约束(也就是指定一个“不该被改动”的对象),而编译器会强制实施这项约束。如果你想让某值保持不变,就应该明确说出来,因为说出来就可以获得编译器的帮助,确保这条约束不被违反。关键字const多才多艺。原创 2016-04-11 16:44:27 · 798 阅读 · 0 评论 -
Item 02:尽量以const,enum,inline 替换 #define
Item 02: Prefer const,enums,and inlines to #define本条款或许改为“宁愿选择编译器而不是预处理器”。原创 2016-04-09 18:42:01 · 444 阅读 · 0 评论 -
Item 04:确定对象被使用前已先被初始化
Item 04:确定对象被使用前已先被初始化 读取未初始化的值会导致不明确的行为。而最佳的处理办法就是:永远在使用对象之前先将它初始化。原创 2016-04-13 16:21:57 · 1392 阅读 · 0 评论 -
Item 01:视C++为一个语言联邦
Item 01:视C++为一个语言联邦如今的C++已经是个多重范型编程语言:一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程性形式的语言。原创 2016-04-08 13:29:54 · 686 阅读 · 0 评论 -
Item 06: 若不想使用编译器自动生成的函数,就该明确拒绝
Item 06:Explicitly disallow the use of compiler-generated functions you do not want.假设你现在要实现一个类,你不想实现类中的某些功能,该怎么办?原创 2016-04-26 13:43:03 · 460 阅读 · 0 评论 -
C 语言实现面向对象编程
C 语言实现面向对象编程1、引言面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法、设计思想。它表现出来的三个最基本的特性就是封装、继承与多态。很多面向对象的编程语言已经包含这三个特性了,例如 Smalltalk、C++、Java。但是你也可以用几乎所有的编程语言来实现面向对象编程,例如 ANSI-C。要记住,面向对象是一种思想,一种方法,不要太拘泥于编程语言。...原创 2018-08-14 18:36:38 · 60763 阅读 · 28 评论