一、default和delete关键字 (一)编译器提供的“缺省函数” 1.类的成员函数:构造/析构函数、复制构造/复制赋值函数、移动构造/移动赋值函数。 2. 类的全局默认操作函数:operator new/delete、operator,、operator*、operator->、operato ...
分类:
其他好文 时间:
2019-08-02 00:14:40
阅读次数:
121
题目描述 模拟标准库字符串类实现你自己的字符串类。该类需具有构造、字符串连接+、取子串和复制构造、移动构造、复制赋值、移动赋值、输出等功能。要求使用动态分配存储字符串内容。 输入描述 测试程序有4个字符串,每个样例前两行含长度不超过200的俩字符串,赋值给前2个字符串对象,后面若干指令,每个指令占一 ...
分类:
其他好文 时间:
2019-04-19 01:03:49
阅读次数:
192
当定义一个类时,我们显示地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通常定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义 ...
分类:
其他好文 时间:
2019-01-19 22:53:15
阅读次数:
194
①LDR (load):读寄存器 举例:LDR R0,[R1] 假设R1的值是x,读取地址x上的数据(4字节),保存到R0中; ②STR (store):写寄存器 举例:STR R0,[R1] 假设R1的值是x,把R0的值写到地址x(4字节); ③B 跳转 ④MOV (move)移动,赋值 举例1: ...
分类:
系统相关 时间:
2018-11-27 22:18:39
阅读次数:
234
首先看拷贝构造函数: 拷贝构造函数中实现了深拷贝处理。再看移动构造函数: 代码构造和拷贝构造函数类似,但是内存的处理不是拷贝而是转移。注意参数类型是右值引用。 移动赋值运算符 赋值运算符的情况和构造函数类似,还是先考察普通的赋值运算符: 再看移动赋值运算符: ...
分类:
移动开发 时间:
2018-10-14 21:59:09
阅读次数:
305
1. 引用的实现原理 引用一般的概念称为变量的别名,定义的时候必须初始化绑定一个指定对象,且中途不可更改绑定对象,那么引用的原理是怎样的呢? 先看一段简单的代码测试 输出结果 可以看到只有一个引用成员对象的类,sizeof是4,跟只有一个指针成员对象的类是一样的,那么先大胆假设引用其实就是一个指针, ...
分类:
编程语言 时间:
2018-10-04 08:52:20
阅读次数:
209
移动构造 传统的深拷贝深赋值 对于类中,含有指针的情况,要自实现其拷贝构造和拷贝赋值。也就是所谓的深拷贝和深赋值。我想这己经成为一种共识了。比如如下类: 上面的过程,我们己经知晓,ret 作为右值引用,引用了临时对象,由于临时对象是待返回对象的复本,所以表面上看起来是,待返回对象的作用域扩展了,生命 ...
分类:
移动开发 时间:
2018-07-20 18:59:48
阅读次数:
346
一、使用“=default” 1. 显式生成拷贝控制成员的合成版本 2. 只能对具有合成版本的成员函数使用“=default” 默认构造函数 拷贝控制成员(拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符) 3. 使用“=default”生成的合成函数分为内联的和非内联的 二、使 ...
分类:
其他好文 时间:
2018-05-01 12:24:23
阅读次数:
183
一、概述 移动构造函数可以弥补拷贝构造函数的空缺。 移动语义,简单来说解决的是各种情形下对象的资源所有权转移的问题。而在C++11之前,移动语义的缺失是C++饱受诟病的问题之一。 举个栗子。 问题一:如何将大象放入冰箱?答案是众所周知的。首先你需要有一台特殊的冰箱,这台冰箱是为了装下大象而制造的。你 ...
分类:
移动开发 时间:
2018-02-27 23:27:47
阅读次数:
253
拷贝控制操作即对象的拷贝,移动,赋值和销毁。一个类通过拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符和析构函数来完成这些工作。拷贝和移动构造函数定义了当用相同类型的另一个对象初始化本对象时做什么。拷贝和移动运算符定义了将一个对象赋予同类型的另一个对象时做什么。析构函数定义了当此类型对象销 ...
分类:
其他好文 时间:
2018-02-05 18:36:24
阅读次数:
180