C++学习记录19--运算符重载为什么要使用引用(=)
来源:互联网 发布:达芬奇软件配置要求 编辑:程序博客网 时间:2024/05/16 07:55
重载=
运算符时,标准定义为
class A{public: A & operator =(line &b)}
这里,赋值函数的返回值是引用和类的拷贝构造函数有关。
实际上,定义为无返回值void operator =(line &b)
也可实现=运算符重载,但使用一个=号时没有问题,使用两个时有会类型不符
A a, b, c;a=b=c;//a=b=c等价于a=(b=c);
若返回值是void,则b=c后数据类型是void,则变成 A=void,报错。
所以为了实现c++中连等的语法需要,讲返回值定义为类的类型比较好。
有返回值时,为什么一定要返回值是引用呢?
当执行到语句return *this;
时,会自动调用类的拷贝构造函数。
但是万一由于没有定义拷贝构造函数 ,就会调用默认的拷贝构造函数。而默认的拷贝构造函数时当在类中有指针时就会出错(浅拷贝)。
所以如果你不用引用做返回时,就必须自定义的深拷贝构造函数,以防类成员中有指针或引用数据导致出错。
另外拷贝构造函数参数也必须引用A (A &a)
,否则在函数体中又会调用拷贝构造函数,无限循环。
阅读全文
0 0
- C++学习记录19--运算符重载为什么要使用引用(=)
- C++赋值运算符重载,为什么要返回引用?
- 赋值运算符重载为什么要返回引用
- c++中有些重载运算符为什么要返回引用?
- c++中有些重载运算符为什么要返回引用
- 为什么运算符重载返回值使用&?
- 友元 重载<<运算符为什么要返回ostream的引用?
- 为什么有时候C++运算符重载要返回引用,附对象生存周期
- 1.9.4 重载流操作符为什么要使用引用(ostream&)
- 运算符重载(c++)
- 学习C++——运算符重载
- C++primer学习:重载运算符(3)
- C++primer学习:重载运算符(4)
- 为什么赋值运算符要返回引用?
- 为什么赋值运算符要返回引用?
- 输出运算符重载<<为什么一定要使用友元呢
- 重载赋值运算符(c/c++)
- C++-运算符重载
- Python.Numpy学习零碎笔记之矩阵创建
- 软件工程(C编码实践篇)学习总结
- 【蓝桥杯】【买不到的数目】
- 【财富空间】北京航空航天大学王田苗教授:人工智能与机器人前沿科技发展与投资布局
- android studio 格式化代码
- C++学习记录19--运算符重载为什么要使用引用(=)
- 【区块链】宜人智库:审慎乐观—— 2017网贷行业区块链技术应用价值思考
- RequireJs入门和进阶教程
- 张正友摄像机标定的研究(MATLAB+OpenCV)
- meaven+springMVC+Redis
- GCD的基本使用及介绍
- qwebkit的套壳开发
- 【产业互联网】产业互联网的未来大发展
- linux防火墙端口开启