创建StaticArray时,数组的大小必须是明确指定的,是一种限制。 全新的数组类:DynamicArray使用时其对象代表的数组的大小能够动态的指定 1、DynamicArray设计要点 类模板 (任意时刻)动态确定内部数组空间大小 即存储数组的空间可以动态的指定 实现函数返回数组长度 拷贝构造 ...
分类:
编程语言 时间:
2018-11-14 20:55:02
阅读次数:
195
定义:如果一个构造函数第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数就是拷贝构造函数。 拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参 ...
分类:
其他好文 时间:
2018-11-11 23:32:08
阅读次数:
243
一、STL简介 STL提供六大组件,彼此可以组合套用: 二、关于容器的一些问题 2.1 当vector的内存用完了,它是如何动态扩展内存的?它是怎么释放内存的?用clear可以释放掉内存吗?是不是线程安全的? 2.2 map是怎么实现的?查找的复杂度是多少?能不能边遍历边插入? 红黑树和散列 O(l ...
分类:
其他好文 时间:
2018-11-06 22:23:06
阅读次数:
196
屏幕输出: 结论: 结论一:func2()函数 返回一个元素。 函数的返回值是一个元素(复杂类型的),返回的是一个新的匿名对象(所以会调用匿名对象类的拷贝构造函数); 结论二:有关 匿名函对象的去和留 如果用匿名对象 初始化 另外一个同类型的对象,匿名对象转成有名对象; 如果用匿名对象 赋值给 另一 ...
分类:
其他好文 时间:
2018-10-16 02:01:13
阅读次数:
184
首先看拷贝构造函数: 拷贝构造函数中实现了深拷贝处理。再看移动构造函数: 代码构造和拷贝构造函数类似,但是内存的处理不是拷贝而是转移。注意参数类型是右值引用。 移动赋值运算符 赋值运算符的情况和构造函数类似,还是先考察普通的赋值运算符: 再看移动赋值运算符: ...
分类:
移动开发 时间:
2018-10-14 21:59:09
阅读次数:
305
C++模板是容器的概念。 本质:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。 1)除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭 ...
分类:
其他好文 时间:
2018-10-13 18:10:14
阅读次数:
125
在定义类的时候,编译器会自动为类提供两个构造函数: 1、无参构造函数 如果没有定义任何的构造函数,则会生成无参构造函数 2、拷贝构造函数 拷贝构造函数用于类之间的赋值:Test (const & t)。。。 Test t1; Test t2(t1); or QString str1; QString ...
分类:
其他好文 时间:
2018-10-12 01:25:59
阅读次数:
157
这里我们用类String 来介绍这两个函数: 拷贝构造函数是一种特殊构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用拷贝构造函数。为啥形参必须是对该类型的引用呢?试想一下,假如形参是该类的一个实例,由于是传值参数 ...
分类:
编程语言 时间:
2018-10-08 12:32:54
阅读次数:
175
C++ 已经拥有了拷贝构造函数, 和赋值函数,它们主要定位为浅和深度拷贝, 新增加一个移动构造函数,主要实现一个选择性重用临时对象。 编译器会对返回值进行优化,简称RVO,是编译器的一项优化技术,它涉及(功能是)消除为保存函数返回值而创建的临时对象。 -fno-elide-constructors, ...
分类:
移动开发 时间:
2018-09-30 13:02:58
阅读次数:
308
1 有如下的c++类 class String { public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); // 析构函数 String & op ...
分类:
编程语言 时间:
2018-09-21 15:19:22
阅读次数:
151