/* 为了编写任意代码以在异常发生后执行清理工作, 人们曾经设计了很多"最终的"语言概念。 首先我们定义一个类,它在析构函数中执行任意操作。 */ template <typename F> struct Final_action{ Final_action(F f): clean{f}{} ~Fi ...
分类:
其他好文 时间:
2020-04-30 11:57:48
阅读次数:
70
用C++实现了简易版字符串类,原理还是用C语言风格的字符指针实现,主要为了练习C++的内存管理。 String有功能构造析构复制赋值和常见操作符,特别需要注意的是赋值和+=的时候相当于把原理的String的字符串抛弃掉了,这时候如果不对之前的字符串进行释放处理的话会造成内存泄漏!! 1 #inclu ...
分类:
编程语言 时间:
2020-04-30 09:13:43
阅读次数:
66
类的声明 类的初始化 构造函数 作用:在创建对象时自动对其初始化 析构函数 作用:清除对象,释放内存 在没有显式声明而需要删除对象时,编译器会隐式地声明一个默认析构函数 this指针 this 指针的使用场景 头文件 固定格式,防止该头文件被同一源文件多重调用 标识的命名规则: 1.使用头文件名称 ...
分类:
编程语言 时间:
2020-04-29 23:11:10
阅读次数:
68
1. malloc/free 是标准库函数,new/delete是C++运算符 2. malloc失败返回空,new失败抛出异常 3. new/delete会调用构造,析构函数,malloc/free不会 4. new返回有类型的指针,malloc返回无类型的指针 5. 使用new操作符申请内存分配 ...
分类:
其他好文 时间:
2020-04-29 00:53:34
阅读次数:
60
一:概述: (1): 1:在C++中,堆分配的概念得到了扩展,不仅C++的关键字new和delete可以分配和释放堆空间,而且通过new建立的对象要调用构造函数,通过delete删除对象也要调用析构函数。 (2):c++程序的内存分配机制: (1):c++程序的内存格局分为四个区, 1:全局数据区 ...
分类:
其他好文 时间:
2020-04-27 09:16:47
阅读次数:
66
纯虚类中,纯虚析构函数。 由于子类会调用父类析构,所以春虚析构函数不同于其他纯虚函数,不只是要声明,还需要实现。 否则编译会异常。 例如 class Session:{ public: Session(); virtual ~Session()=0; } Session::~Session(){} ...
分类:
编程语言 时间:
2020-04-26 11:12:25
阅读次数:
72
本文主要是《C++ Primer Ed5》第13章内容,希望能够对C++的拷贝控制了解的更为深入一些。 概述 C++中的拷贝控制操作主要涉及的几个拷贝控制函数为: 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 其中, 1和3定义了当用同类型的另一个对象【初始化】本对象时做什么 ...
分类:
编程语言 时间:
2020-04-25 19:36:37
阅读次数:
85
构造方法与析构方法是对象中的两个特殊方法,即对象的生命周期。 构造方法:对象创建完成后第一个被对象自动调用的方法。 析构方法:对象在销毁之前最后一个被对象自动调用的方法。 所以通常使用构造方法完成对象的初始化工作,使用析构方法完成对象在销毁前的清理工作。 构造方法: ①一个类只能有一个构造方法! ② ...
分类:
Web程序 时间:
2020-04-25 12:26:29
阅读次数:
62
面向对象和面向过程区别 对象的进化 类的定义 构造方法和 方法 的要点如下: 实例属性和实例方法 实例属性 实例方法 实例方法只是一个指向,并不是重新在定义一个方法没有必要 类对象,类属性,类方法,静态方法 类对象 类属性 类方法 静态方法 内存分析实例对象和类对象创建过程(重要) 方法(析构函数) ...
分类:
其他好文 时间:
2020-04-25 12:25:38
阅读次数:
68
内存泄露: 内存泄漏是指本应该被GC回收的无用对象没有被回收,导致的内存空间的浪费,当内存泄露严重时会导致OOM。 通俗理解就是你用资源的时候为你开辟了一段空间,当你用完时忘记释放资源了,这时内存还被占用着,一次没关系,但是内存泄漏次数多了就会导致内存溢出 例子:你向系统申请分配内存进行使用(new ...
分类:
其他好文 时间:
2020-04-23 18:48:56
阅读次数:
82