美高梅4858赌场美高梅4858赌场作为华人首选娱乐平台,拥有澳门赌场、菲律宾双执照,美高梅集团游戏网址(www.4858.com)与亚洲最大的博彩软件提供商BBIN进行技术合作,致力于打造亚洲第一博彩集团。
当前位置:

赋值运算符重载(C++实现)详解

作者: 美高梅4858赌场|来源: http://www.ff-coffee.com|栏目:美高梅集团游戏网址|    日期:2020-01-04

文章关键词:

美高梅4858赌场,赋值操作符

  正如前面所介绍的,复制构造函数的设计是为了解决包含指针的对象在通过按成员赋值的方式使用同一类的另一个对象的数据进行初始化时出现的问题。类似的问题也会出现在对象赋值中。

  例如,创建一个 NumberArray 类,可以让程序如下定义该类的两个对象:

  由于默认的对象赋值遇到了与默认的复制构造函数相同的问题,所以有人可能会认为,程序员定义的复制构造函数也可以用来解决默认赋值所导致的问题,但事实并非如此。复制构造函数仅在创建对象并初始化对象时才起作用。特别是,复制构造函数不能在赋值中调用。

  要理解初始化和赋值之间的区别,可以假设已经创建了 first 对象,然后来看以下语句:

  为了解决由对象的按成员赋值引起的问题,就需要修改赋值运算符的行为,以便在将其应用于具有指针成员的类的对象时,执行按成员赋值之外的其他操作。换句话说,就是要提供用于该类的对象的赋值运算符的不同版本。所以,这样做也可以说是要重载赋值运算符。

  为给定的类重载赋值运算符的一种方式是定义一个名为operator=的运算符函数作为该类的成员函数。例如,要为 NumberArray 类执行此操作,则可以按如下所示编写该类的声明:

  该函数的名称是operator =。由于该运算符函数是类的实例成员,因此只能通过类的对象调用。通过它调用的类的对象被认为是赋值运算符的左操作数,而传递给该函数的形参被认为是赋值运算符的右操作数。

  为了说明问题,现在假设在程序中定义了 left 和 right 两个对象:

  类赋值运算符的返回值图 1 显示了该重载赋值运算符将返回对 NumberArray 的引用。这和 C++ 的内置赋值运算符的功能是一致的,它允许像下面这样的层叠赋值语句:

  类赋值运算符的实现现在来思考一下赋值运算符的实现。首先要注意的是,如果语句像下面这样:

  C语言/C++交流群:664104694(我们会不定期在群内分享C/C++知识,上传C/C++资料)

  文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章标签: 美高梅4858赌场 ,赋值操作符

 上一篇:浅谈Java变量赋值运算符及相关实例

 下一篇:Young-Liu