C++57个入门知识点_51 运算符重载引出和简要介绍(作用:使代码简洁;运算符重载定义:重载已有运算符,赋值新功能;运算符重载本质还是函数调用,operator+=即为函数名;有些可重载有些不可以)

运算符重载可以说是C++中的灵魂,在类的使用过程中,用函数来写其实不是很方便,一个函数名,并不如一个符号调用的方便
总结:
本篇只是对运算符重载进行引出和简单介绍,运算符重载的方式详细的请参考后文C++57个入门知识点_53 类成员的运算符重载及友元全局的运算符重载

在这里插入图片描述

1. 运算符重载的定义


运算符重载的定义:** 重载已有的运算符,赋值新的功能**

在一个程序中进行“hello”,“ world”两个字符串的拼接,常见的写法int n=1+1,那为了实现刚才所说的功能,可不可以这样去写 char* psz=“hello”+“ world”,这时候其实是对+的含义进行了一次扩充,因为+本质上是对两个数字进行相加,字符串的拼接就类似于数字的相加。但是+不识别左右两边是 char*类型,已经超过了C++中原始的含义。

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
	//两个字符串拼接
	char* psz = "hello" + "world";

	int n = 1 + 1;

}

编译结果:显示此种语法不成立
在这里插入图片描述
为了使得我们使用C++更为舒适,在C++的开发中有一些库函数,我们称之为stl,标准的模板中有这种写法,首先引入标准中#include <string>的头文件,引用using namespace std;,这个可写可不写,标准库的提供所有函数都在标准的std命名空间中,写了话就不需要在后边添加额外的std。以下代码中将using namespace std注释后的写法如下:

#include <iostream>
#include <string>

//using namespace std;

int main(int argc, char* argv[])
{
	//两个字符串拼接
	std::string str = "hello";
	str += " world";//借用std空间内的stl

}

运行结果如下:两个字符串实现了拼接,+实现了字符串拼接功能,比C中的strcat更加高级
在这里插入图片描述
因此提出运算符重载。运算符重载的定义重载已有的运算符,赋值新的功能

2. 运算符重载的本质和特点


运算符的重载本质还是函数的调用operator+=即为函数名,上面使用 stl的形式可以写作以下形式:

#include <iostream>
#include <string>

//using namespace std;

int main(int argc, char* argv[])
{
	//两个字符串拼接
	std::string str = "hello";
	//运算符的重载本质还是函数的调用
	str.operator+=(" world");//等价于上面的str += " world";,这种本质还是类似于调用operator函数

}

运行结果:
在这里插入图片描述

  • 并不是所有的运算符都会重载,以下代码中的-并未在类中进行重载
#include <iostream>
#include <string>

//using namespace std;

int main(int argc, char* argv[])
{
	//两个字符串拼接
	std::string str = "hello";
	str = str - " world";//-的含义不明显

}

编译结果如下:由于-在类中的含义不明确,因此造成未被重载
在这里插入图片描述
因此提出运算符的以下特点:

  • 不破坏原有运算符的功能:原有是加号功能,不能想象为其他功能,尽量运算符重载功能与原有功能相吻合,使用更加方便;
  • 运算符的优先级不变
  • 使用方式要保持不变:主要是指参数的个数

3.学习视频地址:C++57个入门知识点_51 运算符重载引出和简要介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值