原文:重载=运算符为何要返回一个引用?

一个自定义类,如果没有重载其 运算符,那么编译器将自动生成一个。但是此编译器自动生成的重载函数可能不安全。这是因为它采用了所谓的 浅拷贝 ,也就是对于指针而言,它拷贝的是指针的值,而不是其指向的内存空间。那么这个内存空间就有了两个指针指向它,且类对象要析构两次,但是内存空间只能被释放一次,那么第二次就会出现访问错误。 要避免这种 浅拷贝 问题,就需要重载 运算符。这是一个二元运算符,函数名和参数 ...

2015-07-17 13:25 0 2797 推荐指数:

查看详情

c++运算符重载及其返回引用

运算符重载为成员函数 重载为类成员的运算符函数定义形式 函数类型 operator 运算符(形参) { ...

Sun May 10 05:36:00 CST 2020 0 1753
C++ 重载运算符返回值 和 返回引用的原因

原因是: +,-,*等返回不了引用,比如+运算符,可以如下重载(为了简单,假设A 只有int x;int y) A operator+(A a,A b) {A sum; sum.x=a.x+b.x; sum.y=a.y+b.y; return sum; } 分析不能用 ...

Thu Oct 24 20:41:00 CST 2019 0 667
c++中有些重载运算符为什么要返回引用

  事实上,重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。 那么什么情况下要返回对象的引用呢? 原因有两个:   允许进行连续赋值 防止返回对象(返回对象也可以进行连续赋值(常规的情况 ...

Sat Mar 16 23:26:00 CST 2019 0 1174
c++中有些重载运算符为什么要返回引用

  事实上,我们的重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。 那么什么情况下要返回对象的引用呢? 原因有两个:   允许进行连续赋值 防止返回对象(返回对象也可以进行 ...

Wed Sep 14 19:31:00 CST 2016 4 16330
运算符重载

运算符重载运算符能做一些原来做不了的事情,方便它的使用。 操作数:运算符操作的数字,如1+1,加号操作2个数,为双目运算符 一、运算符重载的概念 1、什么是运算符重载: 1、重载,重新载入,就比如之前那讲的函数重载,对一个已有的函数赋值一个新的定义,因此同一个名 字就可以 ...

Wed Nov 17 04:11:00 CST 2021 0 128
运算符重载

什么是运算符重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符重载? 方式:类的成员函数 或 友元函数(类外的普通函数) 规则:不能重载运算符 ...

Tue Jun 04 16:31:00 CST 2019 0 522
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM