返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++简单又好用的基本运算符重载
  • 602
分享到

C++简单又好用的基本运算符重载

2024-04-02 19:04:59 602人浏览 薄情痞子
摘要

目录运算符重载概念加号运算符重载成员函数实现全局函数实现运算符实现函数重载总结运算符重载概念 对已有的运算符进行重新定义,赋予其另外一种功能,以适应不同的数据类型 我们知道已有的运算

运算符重载概念

对已有的运算符进行重新定义,赋予其另外一种功能,以适应不同的数据类型

我们知道已有的运算符有'+'、'-'、'*'、'/'等,这些运算符对于内置数据类型可以直接使用,例如int、float、double、char等等。但是如果我们定义一个类,想实现类中对象属性的加减乘除运算,该怎么实现呢?那就用到运算符重载的知识点了。

加号运算符重载

学会一个顶四个,这篇博文只举例加号运算符重载

成员函数实现

示例:

class Person
{
public:
	Person operator+(Person p)
	{
		Person temp; 
		temp.m_a = this->m_a + p.m_a;
		temp.m_b = this->m_b + p.m_b;
		return temp;
	}
	int m_a;
	int m_b;
};
int main()
{
    Person p1, p2;
    p1.m_a = 10, p2.m_a=20;
    p1.m_b = 30, p2.m_b = 40;
    Person pa = p1.operator+(p2);
    Person pb =p1+p2;
}

定义Person类,声明两个整型属性,我们都知道在类内定义的函数为成员函数或者方法;这个成员函数的返回值为Person类型,意为返回的话会自动调用编译器提供的拷贝构造函数,这个在前面的文章已经提到过,这里注意函数名不要自定义了,就写operator+,英文意思就是’+‘操作,这样定义符合编译器规范,可以使用简化版的运算,然后参数也是Person类型的,这是因为我们的目的就是要实现自定义类型的运算;该函数的实现也很简单,就是将各属性相加后的结果返回给新的对象;主函数中pa和pb的两个属性均会相等,pa的调用是重载的本质调用,pb的则是简化的调用,看一下运行结果:

全局函数实现

示例:

Person operator+(Person p1,Person p2)
{
	Person temp;
	temp.m_a = p1.m_a + p2.m_a;
	temp.m_b = p1.m_b + p2.m_b;
	return temp;
}
Person pa = operator+(p1, p2);
Person pb = p1+p2;

在类外面定义的函数为全局函数,和上面成员函数的区别就是多了一个Person类型的参数而已;也是新建一个对象,让其属性等于参数的属性之和,最后返回这个结果,我们还是只需要新创建一个对象来等于这个结果就行了,全局函数也分本质调用和简化调用两种。

运算符实现函数重载

运算符重载也可以发生函数重载,就是在同一个作用域下,相同函数名的函数可以实现不一样的功能。

示例:

Person operator+(Person p1, int v)
{
	Person temp;
	temp.m_a = p1.m_a + v;
	temp.m_b = p1.m_b + v;
	return temp;
}

这里是一个全局函数的写法,传入对象参数p1和整型数据v,让新建对象的属性等于传入对象参数的属性都和v相加并返回该结果给新创建的对象,写完改函数就可以直接进行这样的调用了:

int main()
{
	Person p1, p2;
	p1.m_a = 10, p2.m_a=20;
	p1.m_b = 30, p2.m_b = 40; 
	Person pa = p1 + p2;
	Person pb = operator+(p1, p2);
	Person p4 = pa + pb;
	Person p5 = p4 + 10;
	cout << "pa的属性为:" <<pa.m_a << pa.m_b << endl;
	cout << "pb的属性为:" <<pb.m_a << pb.m_b << endl;
	cout << "p4的属性为:" <<p4.m_a << p4.m_b << endl;
	cout << "p5的属性为:" << p5.m_a << p5.m_b << endl;
}

运行效果:

总结

直接对自定义的类进行运算应该很舒服吧,反正我用着很爽,另外的减号、乘除的重载可以按照加号运算符重载的方法一步步实现,有兴趣的朋友一定早已跃跃欲试了,感谢大家的观看,快去尝试吧

到此这篇关于c++简单又好用的基本运算符重载的文章就介绍到这了,更多相关C++运算符重载内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++简单又好用的基本运算符重载

本文链接: https://lsjlt.com/news/150697.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++简单又好用的基本运算符重载
    目录运算符重载概念加号运算符重载成员函数实现全局函数实现运算符实现函数重载总结运算符重载概念 对已有的运算符进行重新定义,赋予其另外一种功能,以适应不同的数据类型 我们知道已有的运算...
    99+
    2024-04-02
  • C++基本运算符重载怎么使用
    这篇“C++基本运算符重载怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++基本运算符重载怎么使用”文章吧。运算符...
    99+
    2023-07-02
  • Python运算符重载的简单实例代码
    目录什么是运算符重载以__pow__为例反向运算符的重载总结什么是运算符重载 让自定义的类生成的对象(实例)能够使用运算符进行操作 作用: 让自定义的实例像内建对象一样进行运算符操作...
    99+
    2024-04-02
  • C++中运算符重载怎么用
    这篇文章主要介绍C++中运算符重载怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!运算符重载为什么要使用运算符重载-C/C++的运算符,支持的数据类型,仅限于基本数据类型。问题:一头牛+一头马 = ?(牛马神兽?...
    99+
    2023-06-29
  • C++基础知识之运算符重载详解
    目录运算符重载方式一, 使用成员函数重载运算符 需求:把牛肉换猪肉, 羊肉换猪肉方式二, 使用非成员函数【友元函数】重载运算符两种方式的区别两种方式的选择:总结运算符重载 为什么要使...
    99+
    2024-04-02
  • C#运算符重载“>”的操作
    本篇内容主要讲解“C#运算符重载“>”的操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#运算符重载“>”的操作”吧!C#运算符重载“>”的操作问题的出现:今天一个同学在做...
    99+
    2023-06-18
  • C++中的运算符重载详解
    目录1、引例2、类中自动建立的函数3、重载赋值运算符解析总结1、引例 class Complex { private: double Real,Image; public: ...
    99+
    2024-04-02
  • C++重载的奥义之运算符重载详解
    目录0、引言1、运算符重载定义2、作为成员函数进行重载3、作为全局函数进行重载4、运算符重载的一些规则0、引言 重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一...
    99+
    2023-05-16
    C++ 运算符重载 C++ 运算符 C++ 重载
  • 关于C++的重载运算符和重载函数
    目录C++重载运算符和重载函数C++ 中的函数重载C++ 中的运算符重载可重载运算符/不可重载运算符C++重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定...
    99+
    2023-05-19
    C++重载运算符 C++重载函数
  • c++运算符重载的作用有哪些
    C++运算符重载的作用主要有以下几个方面: 扩展内置数据类型的功能:可以为内置数据类型(如整型、浮点型等)定义自定义的运算规则,使...
    99+
    2024-03-13
    c++
  • C++运算符重载的详细讲解
    加号运算符重载 对于内置数据类型,编译器知道如何运算 但是对于自己封装的类,编译器无法进行运算 这时可以通过自己定义运算符重载进行运算 operator+ 通过成员函数重载+号 ...
    99+
    2024-04-02
  • C++双目运算符+=的重载详解
    目录1、+=重载2、friend重载+=3、运算符3.1 单目运算符3.2 双目运算符3.3 三目运算符4、重载++和重载- -总结1、+=重载 class Complex { ...
    99+
    2024-04-02
  • C语言运算符的重载详解
    目录运算符重载的规则 1. 运算符重载为成员函数2. 运算符重载为非成员函数        ...
    99+
    2024-04-02
  • C#怎么重载更多的运算符
    本篇内容介绍了“C#怎么重载更多的运算符”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实例using System;namespa...
    99+
    2023-06-17
  • C#运算符重载的实例介绍
    本篇内容介绍了“C#运算符重载的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#运算符重载实例是掌握C#运算符重载的有效方法,那么...
    99+
    2023-06-18
  • C#位运算符的基本用法介绍
    位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right ...
    99+
    2024-04-02
  • C++运算符重载方法怎么使用
    本篇内容介绍了“C++运算符重载方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概念C++为了增强代码的可读性引入了运算符重载,运...
    99+
    2023-06-30
  • C++重载运算符你真的了解吗
    目录1.重载运算符的必要性2.重载运算符的形式与规则3.重载运算符的运算4.转义运算符总结运算符实际上是一个函数,所以运算符的重载实际上是函数的重载,。编译程序对运算符的重载的选择,...
    99+
    2024-04-02
  • c++运算符重载的方法是什么
    C++中的运算符重载方法是通过定义特殊的成员函数来实现的。重载运算符的函数被称为运算符函数,它们具有特殊的命名规则和语法。一般情况下...
    99+
    2023-09-14
    c++
  • C++中的运算符重载问题详解
    C++中的运算符重载问题详解运算符重载是C++中一个强大而有用的特性,通过重载运算符,可以使得某个类的对象可以像基本类型数据一样使用各种运算符,方便地进行各种操作。本文将详细解释运算符重载的概念,并提供具体的代码示例。在C++中,运算符重载...
    99+
    2023-10-22
    运算符重载 (Operator Overloading) C++中的运算符 (Operators in C++) 重载运
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作