首页 > 编程语言 >C++ 重载运算符返回值问题

C++ 重载运算符返回值问题

时间:2024-03-20 15:49:21浏览次数:21  
标签:返回 对象 C++ 运算符 重载 返回值 赋值

事实上,我们的重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。

那么什么情况下要返回对象的引用呢?

原因有两个:

  • 允许进行连续赋值;
  • 防止返回对象(返回对象也可以进行连续赋值(常规的情况,如a = b = c,而不是(a = b) = c))的时候调用拷贝构造函数和析构函数导致不必要的开销,降低赋值运算符的效率;

对于第二点原因:如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把*this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,会降低赋值函数的效率。

标签:返回,对象,C++,运算符,重载,返回值,赋值
From: https://www.cnblogs.com/love-9/p/18085359

相关文章

  • 开发之单元测试—Test_C++的gtest单元测试
    单元测试测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致测试框架gtest采用的是xUnit架构,JUnitPyUnit:PyUnit主要用于进行白盒测试和回归测试C++测试gtest单元测试是Google的一套用于编写C++测试的框架,可以运......
  • C++单例基类
    在C++中实现单例模式可以使用模板和C++11的特性来达到目的。下面是一个简单的示例代码:#include<iostream>template<typenameT>classSingleton{public:staticT&getInstance(){staticTinstance;returninstance;}Singleton(const......
  • C++单例基类
    要实现一个安全的C++单例基类,确保子类不会随便覆盖单例行为,我们可以使用一种技巧,即CRTP(CuriouslyRecurringTemplatePattern)。这种模式使得基类能够访问派生类的私有和保护成员,从而允许我们在基类中实现单例逻辑,并且保证派生类不会破坏这个逻辑。以下是一个使用CRTP实现的单例......
  • 美国政府敦促开发者:停止使用 C、C++
    “C、C++不安全,新应用开发时就别用了,旧应用应该采取迁移行动”,近日,美国白宫国家网络主任办公室(ONCD)在一份主题为《回到基础构件:通往安全软件之路》的19页PDF报告中强烈呼吁道。其直言,C和C++这几种编程语言既缺乏与内存安全相关的特性,又在关键系统中大量使用,可......
  • C/C++开发问题总结
    1.结构体sizeof问题Linux支持指定结构体比特字段,Windows不支持指定结构体比特字段structindex{longlongstart=0;longlongend=0;unsignedlonglongix=0;shortsegment=0;unsignedshortt:2;unsignedlonglongseq:(64-18);......
  • C++ 函数重载
    一组函数,函数名相同。函数的参数类型或参数个数不同,那么这一组函数就称作函数重载。C++为什么支持函数重载?C++代码产生函数符号的时候,是由函数名+参数列表组成的;C代码产生函数符号的时候,是由函数名来决定;函数重载需要注意什么?一组函数如果是重载函数,一定是处于同一作用......
  • 深入理解Java双冒号(::)运算符的使用
    Jdk8中有好多新的特性,比如引入Lambda,简化代码的书写等等我们先看一个关于Lambda的使用 /***输出list*/@Testpublicvoidtest(){String[]array={"aaaa","bbbb","cccc"};List<String>list=Arrays.asList(array);//Java7for(......
  • C++ 泛型编程
    1.函数模板假设我们设计一个交换两个整型变量的值的函数,代码如下://交换两个整型变量的值的Swap函数:voidSwap(int&x,int&y){inttmp=x;x=y;y=tmp;}如果是浮点类型的变量的值交换,则替换int类型为double即可,代码如下://交换两个double型变量......
  • C++ Qt开发:QUdpSocket实现组播通信
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QUdpSocket组件实现基于UDP的组播通信。组播是一种一对多的通信方式,允许一个发送者将数......
  • C++ string和const char*
    两种方式的函数声明如下:voidfunc(constchar*s);voidfunc(conststd::string&s);当实参是string时:voidfuncstr(conststd::string&s){ std::cout<<s;}voidfuncchar(constchar*s){ std::cout<<s;}intmain(){ std::strings("f......