本文参考 "C++智能指针简单剖析" 内存泄露 我们知道一个对象(变量)的生命周期结束的时候, 会自动释放掉其占用的内存(例如局部变量在包含它的第一个括号结束的时候自动释放掉内存) 这样会编译错误. 但是如果这样写呢? 程序结束的时候会自动释放 的内存, 但是由 算符创建的匿名变量却一直留在内存中, ...
分类:
编程语言 时间:
2018-10-22 20:49:54
阅读次数:
155
1.new delete 的使用 (1)基本数据类型 (2)数组 (3)类对象 2.new delete 和 free malloc 的对比 (1)new、delete 是C++操作符,free、malloc是C函数 (2)new除了会分配空间还会自动调用构造函数,delete会调用析构函数。 3. ...
分类:
编程语言 时间:
2018-10-20 16:22:30
阅读次数:
168
1. 为什么要有构造函数和析构函数 面向对象的思想是从生活中来,手机、车出厂时,是一样的。 这些对象都是被初始化后才上市的,初始化是对象普遍存在的一个状态。 普通方案: 对每个类提供一个 init 函数,对象创建后立即调用 init 函数进行初始化。 这种方案麻烦,并且不易用于对象数组。 所以需要构 ...
分类:
编程语言 时间:
2018-10-16 01:57:10
阅读次数:
190
1构造函数和析构函数的概念 有关构造函数 1构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数; 2)构造函数在定义时可以有参数; 3)没有任何返回类型的声明。 2构造函数的调用 自动调用:一般情况下C++编译器会自动调用构造函数 手动调用:在 ...
分类:
编程语言 时间:
2018-10-11 16:52:55
阅读次数:
161
构造函数: 在对象实例化时被调用,一个类中只能有一个构造函数,在类中起初始化的作用。 析构函数: 在对象结束时被自动调用。 话不多说,用一段代码来说明两者的区别: ...
分类:
Web程序 时间:
2018-10-10 17:51:17
阅读次数:
196
0.引言: 目的:使用智能指针替代LinkList中的原生的指针, 限制:但是我们的智能指针设定了只能单个指针指向某一片堆空间 1. 智能指针的继承层次结构 (1)Pointer是智能指针的抽象父类(模板) ①纯虚析构函数:virtual ~Pointer()=0; ②重载operator->() ...
分类:
其他好文 时间:
2018-10-09 20:03:48
阅读次数:
144
阅读目录 前言 new与malloc的10点区别 1. 申请的内存所在位置 2.返回类型安全性 3.内存分配失败时的返回值 4.是否需要指定内存大小 5.是否调用构造函数/析构函数 6.对数组的处理 7.new与malloc是否可以相互调用 8.是否可以被重载 9. 能够直观地重新分配内存 10. ...
分类:
其他好文 时间:
2018-10-07 15:36:57
阅读次数:
150
阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能分析 阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开、RAI ...
分类:
编程语言 时间:
2018-10-07 15:31:58
阅读次数:
154
总体结论:派生类的构造函数在创建对象时调用,调用顺序如下: 1.调用虚基类的构造函数(若有多个虚基类,调用顺序为继承的顺序。); 2.调用基类的构造函数(若有多个基类,调用顺序为继承的顺序。); 3.调用类类型的成员对象的构造函数(调用顺序为定义的顺序); 4.调用自身的构造函数。 析构函数的调用顺 ...
分类:
其他好文 时间:
2018-10-05 12:17:19
阅读次数:
206
析构函数举例: 结果输出: 析构函数细节举例: 结果输出: 析构函数使用举例: 输出结果: 理解示意图: ...
分类:
Web程序 时间:
2018-10-04 10:50:51
阅读次数:
167