自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Effective C++ 条款26 尽可能延后变量定义式的出现时间

1. 如果变量定义得过早,那么如果在变量定义后被用到之前出现异常,变量未被用到,但仍然要承担构造和析构成本,此外变量用时再定义也便于查找变量,增加代码可读性.2. 对于循环,除非赋值成本比构造和析构成本低且程序对效率高度敏感,将变量定义放在循环内部可以限制变量作用域,增强程序的可理解性和易维护性.//// main.cpp// 条款26:尽可能延后变量定义式的出现时间////...

2018-07-31 23:33:11 155

原创 Effective C++ 条款24 若所有参数皆需类型转换,请为此采用non-member函数

1. 通常,将只接受拷贝构造函数声明为explict是一个不错的主意,因为这可以避免自动的隐式类型转换所带来的错误,但有些情况下,使类支持隐式类型转换是可行的,例如自定义的数值类型:class Rational { public: Rational(int a = 0, int b = 1) : _numerator(a), _denominator(b),_result(a/b...

2018-07-31 23:31:20 201

原创 Effective C++ 条款10 令operator=返回一个reference to *this 条款11 在operator=中处理"自我赋值"

1. 为了支持形如“a=b=c”的连锁形式,最好令operator=返回一个reference to *this.2. 如果类中含有用于指向堆内存的指针,那么赋值操作符就要注意自我赋值的问题,//// main.cpp// 条款10:令operator=返回一个reference to *this//// Created by 于磊 on 2018/6/24.// Co...

2018-07-31 23:23:18 137

原创 Effective C++ 条款08 别让异常逃离析构函数

1. 当异常发生时,如果异常发生在一个try块内部,程序就会跳出该try块,并逐层寻找匹配的catch,跳出try块的过程中,会销毁该try内创建的对象并调用析构函数,如果调用析构函数的过程中又发生异常,程序就会调用标准库terminate函数(terminate函数调用abort函数)结束执行,例如:class A{public: ... void func(){ ...

2018-07-31 23:20:38 177

原创 Effective C++ 条款07 为多态基类声明virtual析构函数

1. 如果一个类将要作为基类,那么它应该具有一个虚析构函数以防止delete经由基类指针指向的派生类对象时发生的"局部销毁"问题,避免造成内存泄露,数据结构败坏,在调试器上浪费时间等问题;任何带有虚函数的类几乎肯定需要一个虚析构函数.2. 在不必需的情况下不应该将成员函数设为虚函数,否则,如果导致一个本来没有虚函数的类带有虚函数,那么它就会增加一个隐含的vptr(virtual table p...

2018-07-31 23:13:56 134

原创 Effective C++ 条款05:了解C++默默编写并调用哪些函数

1. 成员函数只有被需要(被调用)才必须有定义,同理,只有当默认构造函数,拷贝构造函数,赋值操作符,析构函数被需要而类定义它们时,它们才会被编译器创建出来(除非函数在基类中被声明为虚函数,编译器产生的函数是非虚的,public的).2. 并不是只要类没有定义默认构造函数,拷贝构造函数,赋值操作符时编译器就会自动合成它们,它们只有在"被需要"的时候才被产生.3. 虽然编译器在类的创建者没有声...

2018-07-31 23:09:58 127

原创 C++11 成员和非成员begin、end( 标准库与标准库容器成员函数)

C++ Primer,这两点分别在P106、P298。如果需要详细理解最好去书中查看详细解释和示例代码标准库的begin()和end()函数是C++11新标准引入的函数,可以对数组类型进行操作,返回其首尾指针,对标准库容器操作,返回相应迭代器。标准库容器的begin()和end()成员函数属于对应类的成员,返回的是对象容器的首尾迭代器。新标准库的begin()和end()函数可以让我们更...

2018-07-17 14:25:00 936

原创 Effective C++ 条款04 确定对象被使用前已被初始化

条款4 确定对象被使用前已被初始化 1. 对于内置类型,如果变量在全局作用域内定义,默认初始化为0,如果变量在局部作用域内定义,默认不进行初始化;对于类类型,默认调用默认构造函数进行初始化,如果没有默认构造函数,则必须显式初始化. 2. 构造函数对成员进行初始化的动作发生在初始化列表中而不是函数体内,在函数体内进行的"初始化"实际上是赋值,对于类类型,降低了程序效率,对于内置类...

2018-07-07 23:02:55 215

原创 Effective C++ 条款03 尽可能使用const

条款3 尽可能使用const1. const 可被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体;用const修饰指针,可指出指针自身、指针所指物或两者都(或都不)是const。如果const出现在*之前,表明指针不能更改所指向的对象的内容,如果const出现在*之后,表明指针只能指向同一块内存。另外int const*p和const int*p含义相同。如果对象成员有普通指针...

2018-07-07 19:40:33 321

原创 Effective C++ 条款02 尽量以const,enum,inline替换#define

条款2 尽量以const,enum,inline替换#define“宁可以编译器替换预处理器”,因为#define不被视为语言的一部分。这也是问题所在: #define ASPECT_TATIO 1.653 记号名称ASPECT_TATIO也许从未被编译器看见:也许在编译器开始处理源码之前它就被预处理器移走了。于是记号名称ASPECT_TATIO有可能没进入...

2018-07-07 15:32:18 221

原创 Effective C++ 条款01 视C++为一个语言联邦

 让自己习惯 C++1. 一开始,C++只是C加上一些面向对象特性,最初名称为"C with Classes"(带类的C).2.如今的C++已经是一个多重范型编程语言,同时支持过程形式(procedural),面向对象形式(object-oriented),函数形式(functional),泛型形式(generic),元编程形式(metaprogramming)的语言。这些能力和弹性可...

2018-07-07 13:49:39 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除