自定义博客皮肤

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

条款10:令operator=返回一个reference to *this

关于赋值,有趣的是你可以把它们写成连锁形式: int x, y, z; x = y = z = 15; 同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为: x = (y = (z = 15)); 这里15先被赋值给z,然后其结果(更新后的z)再被赋值给y...

2019-09-15 13:54:49

阅读数 12

评论数 0

条款09:绝不在构造函数和析构函数中调用virtual函数

本条款开始前我要先阐述重点:你不该在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来你预想的结果,就算有你也不会高兴。 实例: #include <iostream> using namespace std; class AppLogContr...

2019-09-15 13:54:36

阅读数 3

评论数 0

条款08:别让异常逃离析构函数

C++并不禁止析构函数吐出异常,但它不鼓励你这样做。这是有理由的。考虑以下代码: class Widget { public: ... ~Widget(){...} }; void doSomething() { std::vector<Widge...

2019-08-27 21:27:31

阅读数 7

评论数 0

条款03:尽可能的使用const

在c++开发中,经常会看到const关键字,比如copy构造函数、copy assignment函数中参数都有const关键字。 在条款02中也提到过用const来替换#define修饰常量,所以const关键字是用来表示常量,即被修饰的变量初始化之后不可被修改。 const修饰变量 ...

2019-08-27 20:43:52

阅读数 4

评论数 0

条款07:为多态基类声明virtual析构函数

c++面向对象特性其中有多态这个特性,平时使用时用基类指针指向子类对象。当我们进行内存回收的时候调用 delete (基类指针),此实如果基类有一个non-virtual析构函数。这种情况下会导致派生类的对象没有被销毁,只有基类部分会被销毁掉,于是造成一个诡异的“局部销毁”对象。这样的后果会形成资...

2019-07-31 22:31:05

阅读数 11

评论数 0

条款06:若不想使用编译器自动生成的函数,就该明确拒绝

从之前条款05中了解到c++自动声明构造函数、复制构造函数、赋值操作符、析构函数,并且这些函数都是public修饰。当我们在设计类的时候可能不想使用c++提供的函数。这时候我们就需要自己来声明了。比如在设计单例类的时候,我们肯定不希望对象被复制,应该只有一个对象,所以我们会声明private 构造...

2019-07-28 21:57:40

阅读数 11

评论数 0

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

什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后。是的,如果你自己没声明,编译器就会为它声明(编译器版本的)一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果没有声明任何构造函数,编译器也会为你声明一个default构...

2019-06-30 23:13:13

阅读数 19

评论数 0

条款04:确定对象被使用前已先被初始化

在C++开发中经常会使用成员变量,有时候会看到既存代码中,在构造函数对内置类型的成员变量进行赋值操作,而没有使用成员初始列。有的甚至没有初始过成员变量,声明之后就直接使用了。 有的人可能认为内置类型会被自动初始化,所以认为没必要,但是这个可能在某些平台开发时不会自动初始化,因此最好手动初始...

2019-06-30 22:00:22

阅读数 18

评论数 0

条款02:尽量以const、enum、inline替换 #define

这个条款或许改为“宁可以编译器替换预处理器”比较好,因为或许 #define 不能被视为语言的一部分。那正是问题所在。 比如定义一个宏: #define ASPECT_RATIO 1.653 这个ASPECT_RATIO也许从未被编译器看见。也许在编译器开始处理源码之前就被预处理器移走了...

2019-05-31 20:27:54

阅读数 28

评论数 0

《Effective C++中文版》学习

《Effective C++》这本书在类设计和子程序设计方面总结了很多宝贵经验。在开发过程中如果遵循里边的条款,能够编写出高质量的代码。当然了,使用前必须结合当前场景,选择合适的,不要生搬硬套。 第一次接触本书的时候,就发现里边提出的问题,在开发过程中好像遇到过,只恨自己没有早点看到。随着内...

2019-05-31 19:34:13

阅读数 205

评论数 0

C++智能指针总结

关于智能指针方面的内容通过对引用计数的分析以及C++自带的智能指针进行介绍,通过以下文章,大家应该对智能指针有一个初步的认识。 智能指针与引用计数详解(一) 智能指针与引用计数详解(二) 智能指针与句柄详解(一) 智能指针与句柄详解(二) C++智能指针——unique_ptr详解 C...

2019-04-29 20:37:40

阅读数 143

评论数 0

智能指针与句柄详解(二)

前言 智能指针与句柄详解(一)中讲了句柄类的实现,本章将用C++模板来实现句柄类。

2019-04-29 20:04:46

阅读数 16

评论数 0

C++智能指针——weak_ptr详解

前言   weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少. 同时weak_ptr 没有重载*和-&...

2019-03-31 21:06:50

阅读数 172

评论数 0

C++智能指针——share_ptr详解

前言 std::shared_ptr是在c++11中引入的一种智能指针,其特点是它所指向的资源具有共享性,即多个shared_ptr可以指向同一份资源。在c++中使用shared_ptr需要包含头文件。 共享指针是靠引用计数的方式来实现共享的功能,其中引用计数可以通过智能指针与引用计数详解文章了解...

2019-03-30 18:52:31

阅读数 179

评论数 0

C++智能指针——unique_ptr详解

前言 从C++智能指针——auto_ptr详解中可以了解到auto_ptr指针的特性以及在C++11中已经被unique_ptr所代替。 unique_ptr介绍 与auto_ptr相比unique_ptr有如下特点: 1、 unique_ptr是一个独享所有权的智能指针,无法进行复制构造...

2019-02-28 21:14:13

阅读数 817

评论数 0

C++智能指针——auto_ptr详解

前言 从之前智能指针的介绍中可以了解到智能指针主要作用是管理内存,避免内存泄漏和悬垂指针。 之前介绍的不管是智能指针与引用计数详解还是智能指针与句柄详解,其核心就是通过一个类来管理被new出来的对象,具体的技术就是靠引用计数。 auto_ptr介绍 auto_ptr的实现原理其实就是RAII,在构...

2019-02-27 18:26:36

阅读数 436

评论数 0

C++模板与泛型编程

前言 泛型是独立于任何特定类型的编码,在C++中,我们经常使用的容器vector,该容器可以定义不同种类的vector,如vector list、vector list或自定义类型等。 函数模板 如果要编写一个函数来比较两个数的大小,返回其中最大值,这两个数可以是int型,也可以是doubl...

2019-01-27 19:30:33

阅读数 37

评论数 0

智能指针与句柄详解(一)

前言: 智能指针与引用计数详解(一)中提到实现智能指针有两种方法,一种是引用计数,另一种就是句柄类实现。 什么是句柄类? 句柄类是用来存储和管理基类指针。指针所指对象的类型可以变化,它既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作。因为句柄类使用指针执行操作,...

2019-01-05 23:13:29

阅读数 116

评论数 0

智能指针与引用计数详解(二)

在智能指针与引用计数详解(一)当中讲了智能指针还有改进的地方,下面具体问题具体分析。 一、智能指针的赋值方法改进 上一章的赋值方法中只要是赋值都是右操作数引用计数加一,左操作数引用计数减一。没有考虑过引用计数对象自赋值的情况。 比如按照上一章代码,在main函数中做一下修改: int *i...

2018-12-12 14:10:43

阅读数 148

评论数 0

智能指针与引用计数详解(一)

前言 在C++项目开发中,有时候会遇到悬垂指针的问题,其中提供的解决方案推荐使用智能指针。 在《C++Primer》书13.5章 提到了该技术的具体使用场景和实现。通过反复阅读和代码测试终于了解其中的思想,下面谈谈自己的理解,如果发现有什么问题,请大家批评指正。 什么是智能指针? 智能指针...

2018-12-10 22:25:38

阅读数 622

评论数 0

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