二十二:
1:拷贝控制操作
拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。
这些,在类的数据成员都能默认构造,拷贝,复制,销毁时,编译器默认都会有合成的版本。
(1) 拷贝构造函数:
Foo(const Foo&);
第一个参数是自身类类型的引用,额外的参数都有默认值。
几种情况下会被隐式使用,所以,不能是explicit
默认拷贝构造函数,又叫...
分类:
编程语言 时间:
2016-05-18 19:28:44
阅读次数:
263
实现CMyString类,实现赋值运算符函数(深拷贝与浅拷贝)
深拷贝:赋值运算符函数说明
步骤1、释放原来的内存空间
步骤2、再重新开辟要赋值的对象的大小的空间
步骤3、再将另一个对象的值拷贝给this对象
友元函数的说明:由于输出重载需要俩个参数,不能再隐含this指针,故使用友元函数
代码如下:
class CMyString
{
public:...
分类:
其他好文 时间:
2016-05-12 23:45:31
阅读次数:
394
首先要说的是当对一个已经定义了构造函数以及赋值运算符(拷贝)的class增加了成员的时候,一定要记得为这个class重新改写构造函数以及拷贝赋值运算符。 下一个容易遗忘的点在继承中,看下面的代码: 1 class Customer 2 { 3 public: 4 //....
分类:
其他好文 时间:
2015-10-05 18:05:07
阅读次数:
113
有些情况自己是不希望生成拷贝构造函数以及拷贝赋值运算符的,这种时候不能只是自己不去编写这些函数,因为这样编译器会自动的去生成这些函数。保险一点的做法是将拷贝构造函数以及拷贝赋值运算符都声明为private的。这样既阻止了编译器生成默认的版本,而且又阻止了别人去调用它。 注意上面的这条“将成员函数.....
分类:
其他好文 时间:
2015-10-04 20:57:35
阅读次数:
135
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
13.1 拷贝、赋值与销毁
1.当定义一个类时,我们显式地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符和析构函数。
2.在一个...
分类:
编程语言 时间:
2015-10-01 11:42:06
阅读次数:
324
一、拷贝构造函数(clone constructor)和拷贝赋值运算符(p.s.请特别注意:操作符'='! 操作符'='出现在声明语句中是初始化操作符; 操作符'='出现在赋值语句中是赋值操作符。 编译器对他们(初始化操作符'='和赋值操作符'=')的处理方式不一样, 虽然同样都是符号'='。请特别...
分类:
编程语言 时间:
2015-08-19 07:05:45
阅读次数:
296
当定义一个类时,我们显式地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数(copy constructor)、拷贝赋值运算符(copy-assignment operator)、移动构造函数(move constructor)、移动赋值运算符(move-assignment operator)和析构函数(destructo...
分类:
其他好文 时间:
2015-06-01 22:44:45
阅读次数:
97
赋值运算符重载: 是用一个已经存在的对象去给另一个已经存在并初始化(调用过构造函数)的对象进行赋值。拷贝构造函数:其实本质还是构造函数,用一个已存在的对象去构造一个原先不存在的对象。string a("hello");string b("world");string c =a ; //拷贝构造函数....
分类:
其他好文 时间:
2015-05-08 12:46:41
阅读次数:
160
13.44 编写标准库string类的简化版本,命名String。你的类应该至少有一个默认构造函数和一个接受C风格字符串指针参数的构造函数。使用allocator为你的String类分配所需内存。13.47 添加拷贝构造函数和拷贝赋值运算符,并添加打印语句,则每次函数执行时打印一条信息。13.48 ...
分类:
其他好文 时间:
2014-08-24 16:41:22
阅读次数:
276
啥是POD类型?POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。平凡的定义1.有平凡的构造函数2.有平凡的拷贝构造函数3.有平凡的移动构造函数4.有平凡的拷贝赋值运算符5.有平凡的移动赋值运算符6.有平凡的析构函数7.不能...
分类:
编程语言 时间:
2014-08-18 01:30:43
阅读次数:
309