-无参构造函数 没有参数的构造函数: 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空; -拷贝构造函数 参数为const class_name & 的构造函数 (当前类对象的引用): 当类中没有定义拷贝构造函数,编译器默认提供一个拷贝构造函数,简单的进行成员变量的复制。 ...
分类:
其他好文 时间:
2018-12-12 12:19:38
阅读次数:
153
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收。 2,如果自定义类型的拷贝构造函数的参数没有用const修饰了:必须用下面的方式接收 编译错误: 解释: 第一种条件下,用 ...
分类:
编程语言 时间:
2018-12-04 00:07:02
阅读次数:
217
在C++11中有两个智能指针类型来管理动态对象,share_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指对象。 我们知道指针或引用在离开作用域时是不会进行析构的,但是类在离开作用域时会自动执行析构函数,所以我们可以用一个类来实现指针指针(unique_ptr本质上是一个类,只 ...
分类:
其他好文 时间:
2018-12-03 13:59:29
阅读次数:
808
1、构造函数和析构函数 2、拷贝构造函数 3、 应用场景 3.1 如果函数返回值是用一个对象接收的,那么会发生一个值拷贝,通过拷贝构造函数创建一个匿名对象。如下有函数Test func2(){ }: 3.2 如果返回值有一个对象来接收,那么这个接收过程不会出发值拷贝。 3.3 另一种更为复杂的情况, ...
分类:
其他好文 时间:
2018-12-01 21:53:39
阅读次数:
133
上面例子中拷贝构造函数1才是系统默认的拷贝构造函数,在自己写的代码中这两个拷贝构造函数都没有什么问题,但是如果用于stl模板参数时,第二个拷贝构造函数往往会出现一些莫名其妙的错误,为了谨慎起见,以后拷贝构造函数的参数都用const修饰 ...
分类:
编程语言 时间:
2018-11-18 00:45:25
阅读次数:
227
通过例子来介绍下C++类的几个基础构造函数。 我们以一个C类型的字符串为例: (一)、我们定义一个myString类,仅包含一个char* 的指针。先来看看它的默认构造函数: 这里仅是申请了一块内存,对传入字符串进行了拷贝。 (二)、关于拷贝构造函数。拷贝构造函数是仅是对于传入对象的一次深拷贝。记得 ...
分类:
其他好文 时间:
2018-11-17 13:22:01
阅读次数:
203
定义:如果一个构造函数第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数就是拷贝构造函数。 拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参 ...
分类:
其他好文 时间:
2018-11-11 23:32:08
阅读次数:
243
屏幕输出: 结论: 结论一: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