C++笔记三:赋值操作符
来源:互联网 发布:php获取服务器ip 编辑:程序博客网 时间:2024/05/22 07:01
赋值操作符
内置类型可以直接赋值,类也应该定义对该类型对象赋值会发生什么。和拷贝构造函数一样,如果类没有定义自己的赋值操作符,编译器就会为类合成一个。
CBox box1,box2;
box1 = box2;
赋值操作符重载
重载操作符是一些函数,其名字为operator后跟着所定义的操作符的符号。因此可以通过定义名为operator=的函数来对赋值行为进行定义。和其他函数一样,操作符函数有一个返回值和形参表。形参表有与该操作符的操作数数目相同的形参。如果操作符函数是一个类的成员,则隐含包括一个this形参。赋值是二元运算,所以该操作符函数有两个形参:第一个形参是左操作数,第二个形参是右操作数。因为赋值必须是类的成员,所以this指针绑定到指向左操作数的指针。因此,赋值操作符接受单个形参,且该形参是同一类类型的对象。右操作数一般作为const引用传递。
赋值操作符的返回类型应该与内置类型赋值运算返回的类型相同。内置类型的赋值运算返回对右操作数的引用,因此,赋值操作符也返回对同一类类型的引用。
CBox的赋值操作可以声明为:
CBox& operator=(const CBox &)
合成赋值操作符
合成赋值操作符与合成拷贝构造函数的操作类似。它会进行逐个成员赋值。将右操作数对象的每个成员依次简单的赋值给左操作数对象对应的成员。数组成员的每个数组元素都会进行赋值。
例如,CBox的合成赋值操作符可能如下:
CBox& CBox::operator=(const CBox&rhs){ m_Length = rhs.m_Length; m_Width = rhs.m_Width; m_Height = rhs.m_Height; return *this;}
拷贝和赋值常一起使用
可以使用合成拷贝构造函数的类通常也可以使用合成赋值构造操作符。一般,如果类需要定义自己的拷贝构造函数,它也需要定义自己的赋值操作符。
三法则(什么时候该自己定义赋值操作符)
拷贝构造函数、赋值操作符、析构函数,往往一起需要,需要其中一个成员往往就需要其他两个。
建议:按照“三法则”来。
- C++笔记三:赋值操作符
- 三,操作符,表达式与赋值
- Effective c++(笔记) 中关于构造函数、析构函数以及赋值操作符的知识
- 三法则,合成赋值操作符,合成复制构造函数
- C++库研究笔记——赋值操作符operator=的正确重载方式(三个准则)
- C++库研究笔记——赋值操作符operator=的正确重载方式(2)
- 《C语言解惑》之 谜题1.2 赋值操作符
- C++_指针悬挂和赋值操作符的重载
- 关于C语言中的复合赋值操作符
- C++_指针悬挂和赋值操作符的重载
- C++_指针悬挂和赋值操作符的重载
- C++primer 5.4 赋值操作符(2.1 类型转换)
- C语言之赋值操作符和表达式
- c++ primer 学习笔记:复制控制之赋值操作符
- C++学习笔记36——赋值操作符
- C++ 赋值操作符
- 赋值操作符
- 赋值操作符
- Java对cookie的操作
- java获取优酷视频真实地址
- 多进程多线程的选择
- Activiti快速入门项目-kft-activiti-demo
- JS分页控件
- C++笔记三:赋值操作符
- android4.2 camera icon
- uva 11461 Square Numbers
- 集体智慧常用的算法,以及这些算法的含义
- 运行不了blueprint
- 卡尔曼滤波学习
- 分类算法总结
- 做更好的自己,人生最不值得你去做的30件事
- CENTOS 设置文件夹打开方式:在同一窗口打开文件夹