运算符重载

第四章 运算符重载之——运算符重载的概念 1、运算符重载就是给已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时产生不同的行为。运算符重载的目的是使得运算符也能够用来操作对象。 2、C++允许重载大多数运算符,不允许重载的有: 成员访问运算符 . 成员指针访问运算符 .* 、 ->* 域运算符 : : 长度运算符 sizeof 条件运算符 ? : 预处理符 # 用于类运算的运算符通常都要重载, = 默认重载为成员变量的复制 & 默认重载为返回任何类对象的地址 3、运算符重载的实质是编写以运算符为名称的函数,使用 阅读详情

内容:运算符重载

整理:CmdHack

时间:2010年2月3日23:54:50

 

一:关于”+”

Int a , int b

a+ b 之后a,b的值都不改变

所以定义类class String

定义对象:String str1 ,str2

完成str1+str2 应该它们里边的数据成员的内容都不发生改变

所以

Mystring Mystring::operator+ ( Mystring obj)

{

       Mystring Temp(*this);

 

       Temp.CatString(obj);

       return Temp;

}

用临时对象类类储存  然后修改这个临时对象  最后一个拷贝构造过程

 

这样美中不足的是 只能满足以下两种情况

Str1+str2和 str1+”Dong” (“Dong”会参与有参构造产生一个无名对象)

而不能满足”Dong” + str1 

所以再设计的时候还需要一个全局函数以满足该类型的匹配

原型如下(设计很巧妙)

Mystring operator+ ( const char* Str, Mystring obj)

{     

       return Mystring(Str) + obj;

}

然后将该全局函数添加为类的友元

(哪怕该函数只调用类的Public数据成员和成员函数 也写成类的友元比较好  完没封装)

 

写“+”的重载函数的时候需要注意的有

1:“+”左右的对象不改变(临时对象来代替,而且整个过程会产生一个无名对象(有参构造)和 拷贝构造过程)

2:关于第一点特别要注意的是 返回值是类 而不是类的引用

3:为了满足基本数据类型在左 对象类型在右 这种情况

   需要一个全局函数(两参数 基本在左) 然后添加为类的友元

关于第2点 为什么返回类类型而不是类的引用类型?

1:如果返回值是*this那么”+”左值发生改变  不符合要求

  如果返回临时对象的引用  但是临时对象出了函数就会调用析构函数

  所以更不满足要求了, 所以“+“的返回值是类类型   这个就成了约定俗成的东西

  当然也是最正确的

 

/////////////////////////////////////////////////未完待续//////////////////////////////////////////

Win10系统下AppScan 10.0.0安装破解全流程(附百度网盘资源) 本文详细介绍了在Windows 10系统上安装和配置AppScan 10.0.0进行Web漏洞扫描的完整流程。内容涵盖环境准备、分步安装、核心文件部署、许可证配置及首次扫描实践,旨在帮助开发人员和安全爱好者快速搭建专业的Web应用安全扫描环境,并提升扫描效率。 阅读详情

相关推荐

人大金仓的‘影子表’sys_user:搞懂Schema优先级,告别字段不存在的报错

本文深入解析人大金仓数据库中‘影子表’sys_user的Schema优先级问题,帮助开发者解决字段不存在的报错。通过分析Schema搜索路径机制,提供四种解决方案,包括连接时指定Schema、动态调整搜索路径、永久修改用户设置和使用完全限定表名,确保查询准确无误。

weixin_30329623的博客 594

运算符重载之友元运算符重载

友元可以参考:https://blog.youkuaiyun.com/aaqian1/article/details/84427884 友元运算符重载函数: 把运算符重载函数定义为某个类的友元函数。 1、定义友元运算符重载函数的语法形式 (1)在类的内部,定义友元运算符重载函数的格式如下: friend 函数类型 operator 运算符(形参表) { 函数体 } (2)友元运算符重载函数也可以在类中声明...

aaqian1的博客 1万+

OpenClaw的引导配置(onboard)流程

脚本安装的直接安装完到引导配置界面,其他安装方式还可以直接命令到配置。

supersolon的专栏 1323

C++运算符重载(类内、外重载)

1.概念   运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能。这个函数叫做运算符重载函数(常为类的成员函数)。 2.运算符重载的基本格式    返回值类型 类名::operator重载的运算符(参数表)    {    ……    }    operator是关键字,它与重载的运算符一起构成函数名。 3.运算符重载的两种方法 1.类内重载 #include <iostream> using namespa

u014583317的博客 7万+

Cadence IC5141保姆级教程:Bandgap电路四大仿真(稳定性/噪声/启动/PSRR)完整流程与调参心得

本文提供Cadence IC5141中Bandgap电路的四大仿真(稳定性仿真、噪声仿真、启动仿真、PSRR仿真)的完整流程与调参心得。从原理图检查到ADE L配置,详细解析各仿真步骤的关键参数设置与优化策略,帮助工程师高效完成电路设计与性能调优。

weixin_30399821的博客 1649

复现基于PYNQ-Z2的手写数字识别卷积加速器设计

来源雪天鱼。

eachanm的博客 968

运算符重载之成员运算符重载

成员运算符重载函数 成员运算符重载函数,即把运算符重载函数定义为某个类的成员函数。 1、定义成员运算符重载函数的语法形式 (1)在类的内部,定义成员运算符重载函数的格式如下: 函数类型 operator 运算符(形参表){ 函数体 } (2)成员运算符重载函数也可以在类中声明成员函数的原型,在类外定义。 在类内,声明成员运算符重载函数原型的格式如下: class X{ 函数类型 operat...

aaqian1的博客 4555

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7888

C++——运算符重载

运算符重载:对数据类型已有的运算符重新进行定义赋予另一种功能,以适应不同的数据类型对于内置数据类型,编译器知道如何进行运算int a = 10;int b = 20;//计算机知道如何计算但是如果是两个自定义的类相加计算机就不知道如何计算,因为加号两边不是系统内置的数据结构。

头秃中。。。。。 4097

当AI学会写“自传”:OpenClaw 的 SOUL.md 如何把配置文件变成一颗会变形的心

SOUL.md。

步子哥的博客 1308

Unity与iOS原生交互实战指南

C#(DllImport) → C 接口(extern "C") → Objective‑C / SwiftObjective‑C → UnitySendMessage → C#(GameObject + public 方法)在写.mm文件;在里面写;C# 用声明;调用它,参数就是 string / 数值等;在.mm里做你想做的 iOS 原生操作。在 Unity 里准备一个常驻 GameObject,比如;上面挂一个脚本,写;在 iOS 插件中用;

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1357

运算符重载———运算符重载的基本概念

引入运算符重载的目的: 由于C++预定义的运算符,只能用于基本数据类型的运算:整型、实型、字符型、逻辑型,导致对象无法通过运算符进行运算。故引入了运算符重载。 运算符重载: 1:运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为。 2:运算符重载的目的是:扩展C++中提供的运算符的适用范围,使之能作用于对象。 3:运算符重载的实质是函数重载,可以重载为普通函数,也可以重载为成员函数 4:把含运算符的表达式转换成对运算符函数的调用。

qq_44923545的博客 7730

Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

🟢 Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6万+

C++ 运算符重载+赋值运算符重载

当运算符被用于类类型的对象时,C++ 语言允许我们通过运算符重载的形式指定新的含义。C++ 规定类类型对象使用运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。运算符重载是具有特殊名字的函数,他的名字是由 operator 和后面要定义的运算符共同构成。和其他函数一样,它也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作用的运算对象数量一样多。

Jason_from_China的博客 1684

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

c++之运算符重载

前言 本篇文章主要写的是关于c++运算符重载的问题,运算符重载是c++中比较重要的概念。本篇文章用了大量的实例来说明c++运算符重载,因此文章的篇幅可能会比较大。 一、什么是运算符重载 在c++中我们都知道有函数重载的概念,在类和对象的设计中还设计到了成员函数重载。同样c++也提供了运算符的重载,所谓重载,就是赋予新的含义。实际上我们在前期的学习过程中已经不知不觉使用了运算符重载,如"<<“和”>>“本来是c++的位移运算符,但是却可以用来输入与输出,这是因为c++系统对”<&

weixin_44974029的博客 3671

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

重载学习——函数重载与运算符重载

一枚小新,有问题欢迎共同探讨~

weixin_62377025的博客 2674

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【C++】运算符重载

本文讲解了 C++ 运算符重载的概念与用法,包括成员函数重载、友元函数重载、全局函数重载,以及对 ++、--、<<、>> 等特殊运算符的重载方式

weixin_56167571的博客 1690

函数重载和运算符重载

函数重载和运算符重载,实现了常见的==运算符、=运算符、+、+=运算符,

crawer 1546

CPP运算符重载

文章目录函数的重载运算符重载运算符重载的作用运算符重载的方式典型运算符的重载转换构造函数类型转换函数 函数的重载 1.定义的重载函数必须具有不同的参数个数,或不同的参数类型。编译系统根据不同的参数去调用不同的重载函数,实现不同的功能。 2、仅返回值不同时,不能定义为重载函数。 运算符重载 函数重载是指完成不同功能的函数可以具有相同的函数名。 C++编译器根据函数的实参确定应该调用哪一个函数。 运算...

SongyangJi 3221

一文读懂C++运算符重载&运算符重载函数

通过运算符重载,扩大了C++已有运算符的作用,使运算符能用于类对象;使用运算符重载,能使程序易于编写、阅读和维护;运算符被重载后,其原有的功能仍然保留,没有丧失或改变。 二、通过运算符重载函数实现运算符的重载 运算符重载函数的一般形式:注:1)形参列表里可以不止一个参数;如果是对象的话,需要“类名&对象名”的形式 1、不允许创造新的运算符,只能对已有的C++运算符进行重载。2、重载不能改变运算符运算量的个数(即操作数),不能改变运算符的优先级,不能改变运算符的结合性。3、重载运算符的函数不能带

pl0020的博客 3009

运算符重载——算术运算符重载

一、写在前面 1.本篇涉及内容 虚函数 多态 先期联编与迟后联编 类的杂冗 抽象类 多重继承

k909397116的博客 1501

运算符重载学习总结

 实际上我们在学习这一部分内容时,也一直在运用运算符重载技术,例如,对+运算符,可将两个整型数相加,如1+9,也可将两个实型数相加,如2.5+9.6。这时编译系统在内部重载了两种不同数据类型的加法运算,这种重载的实质是函数重载,即int add(int,int)和float add(float,float)。但是编译系统内定的运算符重载形式,只能对系统定义的基本数据类型起作用,对用户自己定义的数据...

heyson20171784的博客 6396

函数重载、运算符重载

函数重载、运算符重载1.函数重载2.运算符重载 1.函数重载 1.1函数重载的定义 函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同。 1.2使用场景 常用来处理实现功能类似数据类型不同的问题。 下面举例来说明一下重载函数的格式。 int Add(int left,int right){ return left + right; } double Add(double left, double right

weixin_45143303的博客 2018
上一篇: 虚拟继承
下一篇: c++文件操作
cmdhack
博客等级 码龄19年 20粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值