C++运算符重载(8)
来源:互联网 发布:路渺渺何知礼 编辑:程序博客网 时间:2024/05/16 14:17
在前面我们提到过:当没有用户定义赋值操作符时,编译器会默认生成一个进行浅型拷贝
如指针不但会赋给指向的值,还会赋给地址,这回产生问题
这个问题对引用而言,适不适用呢?
#include <iostream>using namespace std;class myTestTwo {private:int value;int &ref = value; //创建value的引用public:myTestTwo(int i) {value = i;ref = value;}void myPrint() {cout << ref << endl;}void setValue(int i) {value = i;}};int main() {myTestTwo testA(10);myTestTwo testB(20);testA.myPrint();testB.myPrint();testB = testA; //提示错误system("PAUSE");return 0;}
这是不被允许的,只能由用户自行创建操作符
myTestTwo& operator = (const myTestTwo& obj) {this->value = obj.value;return *this;}
下面这些情况,编译器不会默认生成操作符
(1)类中包含const或volatile的非静态数据成员
(2)不能被赋值的非静态数据成员(如引用)
(3)被继承的基类不能使用赋值操作符(例如基类中包含引用类型的成员)
(4)类中包含指针
阅读全文
0 0
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- 使用SSH反向隧道进行内网穿透
- 银行为何不待见你的供应链金融?
- Android消息机制Handler
- 解决: Annotation processors must be explicitly declared now
- 记一笔CardView使用指南
- C++运算符重载(8)
- AMD、CMD、CommonJs与ES6对比
- 会飞的hint
- Golang以OO的方式实现二叉查找树
- java栈、堆、方法区详解
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用018-Flink中参数传递和容错设定002
- ActiveMQ:点对点队列消费者接收不到消息
- MVC模式简介
- Linux下启动Oracle服务和监听程序