前言 如果你不想要编译器帮你自动生成的拷贝机制 (参考前文),那么你应当明确的拒绝。 如何拒绝?这便是本文要解决的主要问题。问题描述 当你定义了一个类,而这个类中各对象之间也是封装的 - 禁止同类对象之间的相互赋值以及复制,那么你需要屏蔽掉编译器帮你生成的拷贝构造函数以及赋值运算符。 在许多...
分类:
其他好文 时间:
2014-08-28 22:31:06
阅读次数:
264
/*******************拷贝构造函数和赋值运算符重载有以下两个不同之处***************************/1.拷贝构造函数生成新的类对象,而赋值运算符不能。2.由于拷贝构造函数是直接构造一个新的类对象,所以在初始化这个对象之前不用检验源对象是否和新对象相同,而复制...
分类:
其他好文 时间:
2014-08-08 04:16:55
阅读次数:
376
为什么赋值运算符要返回引用??因为赋值操作会改变左值,而 +
之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式。+ 返回一个临时对象是合情合理的
,你若返回引用大多数情况下也不会出错或导致某个操作数被意外修改,但这就使(a+b...
分类:
编程语言 时间:
2014-06-02 08:57:00
阅读次数:
382
拷贝构造函数是用一个已存在的对象去构造一个不存在的对象(拷贝构造函数毕竟还是构造函数嘛),也就是初始化一个对象。而赋值运算符重载函数是用一个存在的对象去给另一个已存在并初始化过(即已经过构造函数的初始化了)的对象进行赋值。
它们定义上的区别,楼上的已经说过了。 比如:String s1("hell....
分类:
其他好文 时间:
2014-05-29 01:26:15
阅读次数:
278
复制控制--复制构造函数、赋值操作符引言: 当定义一个新类型时,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么– 复制构造函数、赋值操作符和析构函数的作用! 复制构造函数:具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式的使用复制构造函数;当将该类型的对象传递给函数或者从函数返回该类型的对象时,将隐...
分类:
编程语言 时间:
2014-05-02 07:48:27
阅读次数:
385