返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >关于C++的重载运算符和重载函数
  • 335
分享到

关于C++的重载运算符和重载函数

C++重载运算符C++重载函数 2023-05-19 20:05:00 335人浏览 安东尼
摘要

目录c++重载运算符和重载函数C++ 中的函数重载C++ 中的运算符重载可重载运算符/不可重载运算符C++重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定

C++重载运算符和重载函数

C++ 允许在同一作用域中的某个函数运算符指定多个定义,分别称为函数重载运算符重载

重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。

当您调用一个重载函数重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策

C++ 中的函数重载

在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。

下面的实例中,同名函数print()被用于输出不同的数据类型:

#include <iOStream>
using namespace std;
class printData
{
   public:
      void print(int i) {
        cout << "整数为: " << i << endl;
      }
      void print(double  f) {
        cout << "浮点数为: " << f << endl;
      }
      void print(char c[]) {
        cout << "字符串为: " << c << endl;
      }
};
int main(void)
{
   printData pd;
   // 输出整数
   pd.print(5);
   // 输出浮点数
   pd.print(500.263);
   // 输出字符串
   char c[] = "Hello C++";
   pd.print(c);
   return 0;

当上面的代码被编译和执行时,它会产生下列结果:

整数为: 5
浮点数为: 500.263
字符串为: Hello C++

C++ 中的运算符重载

您可以重定义或重载大部分 C++ 内置的运算符。这样,您就能使用自定义类型的运算符。

重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

Box operator+(const Box&);

声明加法运算符用于把两个 Box 对象相加,返回最终的 Box 对象。大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数。如果我们定义上面的函数为类的非成员函数,那么我们需要为每次操作传递两个参数,如下所示:

Box operator+(const Box&, const Box&);

下面的实例使用成员函数演示了运算符重载的概念。在这里,对象作为参数进行传递,对象的属性使用this运算符进行访问,如下所示:

#include <iostream>
using namespace std;
class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
      void setLength( double len )
      {
          length = len;
      }
      void setBreadth( double bre )
      {
          breadth = bre;
      }
      void setHeight( double hei )
      {
          height = hei;
      }
      // 重载 + 运算符,用于把两个 Box 对象相加
      Box operator+(const Box& b)
      {
         Box box;
         box.length = this->length + b.length;
         box.breadth = this->breadth + b.breadth;
         box.height = this->height + b.height;
         return box;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};
// 程序的主函数
int main( )
{
   Box Box1;                // 声明 Box1,类型为 Box
   Box Box2;                // 声明 Box2,类型为 Box
   Box Box3;                // 声明 Box3,类型为 Box
   double volume = 0.0;     // 把体积存储在该变量中
   // Box1 详述
   Box1.setLength(6.0); 
   Box1.setBreadth(7.0); 
   Box1.setHeight(5.0);
   // Box2 详述
   Box2.setLength(12.0); 
   Box2.setBreadth(13.0); 
   Box2.setHeight(10.0);
   // Box1 的体积
   volume = Box1.getVolume();
   cout << "Volume of Box1 : " << volume <<endl;
   // Box2 的体积
   volume = Box2.getVolume();
   cout << "Volume of Box2 : " << volume <<endl;
   // 把两个对象相加,得到 Box3
   Box3 = Box1 + Box2;
   // Box3 的体积
   volume = Box3.getVolume();
   cout << "Volume of Box3 : " << volume <<endl;
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Volume of Box1 : 210
Volume of Box2 : 1560
Volume of Box3 : 5400

可重载运算符/不可重载运算符

下面是可重载的运算符列表:

双目算术运算符+ (加),-(减),*(乘),/(除),%(取模)
关系运算符==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),>=(大于等于)
逻辑运算符||(逻辑或),&&(逻辑与),!(逻辑非)
单目运算符+ (正),-(负),*(指针),&(取地址)
自增自减运算符++(自增),--(自减)
位运算符| (按位或),& (按位与),~(按位取反),^(按位异或),,<<(左移),>>(右移)
赋值运算符=, +=, -=, *=, /= , % = , &=, |=, ^=, <<=, >>=
空间申请与释放new, delete, new[ ] , delete[]
其他运算符()(函数调用),->(成员访问),,(逗号),[](下标)

下面是不可重载的运算符列表:

  • .:成员访问运算符
  • .*,->*:成员指针访问运算符
  • :::域运算符
  • sizeof:长度运算符
  • ?::条件运算符
  • #: 预处理符号

下面提供了各种运算符重载的实例,帮助您更好地理解重载的概念。

序号运算符和实例
1一元运算符重载
2二元运算符重载
3关系运算符重载
4输入/输出运算符重载
5++ 和 -- 运算符重载
6赋值运算符重载
7函数调用运算符 () 重载
8下标运算符 [] 重载
9类成员访问运算符 -> 重载

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

--结束END--

本文标题: 关于C++的重载运算符和重载函数

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

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

猜你喜欢
  • 关于C++的重载运算符和重载函数
    目录C++重载运算符和重载函数C++ 中的函数重载C++ 中的运算符重载可重载运算符/不可重载运算符C++重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定...
    99+
    2023-05-19
    C++重载运算符 C++重载函数
  • 关于C++运算符重载的一些困惑详解
    一.背景 在复习《C++基础与提高》时,自己实现运算符重载(i++)时,几次都报错。其实还是自己对运算符重载这一部分内容理解得不够透彻,于是再次看了下书上的内容,理解算是加深了一些,...
    99+
    2024-04-02
  • C++重载的奥义之运算符重载详解
    目录0、引言1、运算符重载定义2、作为成员函数进行重载3、作为全局函数进行重载4、运算符重载的一些规则0、引言 重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一...
    99+
    2023-05-16
    C++ 运算符重载 C++ 运算符 C++ 重载
  • Python运算符重载
     运算符重载 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method        Overloads        Call for __init__   ...
    99+
    2023-01-31
    运算符 Python
  • 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++11运算符重载和向量类重载实例详解(<<,>>,+,-,*等)
    目录1. C++运算符重载介绍1.1 单目运算符与双目运算符1.2 友元运算符2. 实例讲解2.1 头文件定义2.2 实现运算符重载总结1. C++运算符重载介绍 C ++ 中预定义...
    99+
    2024-04-02
  • C++运算符重载图文详解
    目录1. 运算符重载1.1 运算符重载为普通函数1.2 运算符重载为成员函数2. 赋值运算符=的重载2.1浅复制与深复制2.2返回值的讨论3. 动态可变长度数组总结1. 运算符重载 ...
    99+
    2024-04-02
  • C#怎么实现运算符重载
    本篇内容介绍了“C#怎么实现运算符重载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!运算符重载的实现下面的程序演示了完整的实现:using&...
    99+
    2023-06-17
  • C#重载运算符怎么定义
    本文小编为大家详细介绍“C#重载运算符怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#重载运算符怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C# 运算符重载您可以重定义或重载 C#...
    99+
    2023-06-17
  • C++运算符重载怎么理解
    这期内容当中小编将会给大家带来有关C++运算符重载怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++当中除了函数可以重载之外,其实运算符也是可以重载的。我们之前已经接触过一些,可能大家没有意识到...
    99+
    2023-06-22
  • C++中运算符重载怎么用
    这篇文章主要介绍C++中运算符重载怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!运算符重载为什么要使用运算符重载-C/C++的运算符,支持的数据类型,仅限于基本数据类型。问题:一头牛+一头马 = ?(牛马神兽?...
    99+
    2023-06-29
  • 聊聊C++ 运算符重载知识
    前言 1.运算符重载是一种形式的C++多态。 2.重载运算符可以使代码看起来更加自然。 回顾类 在正常构造类的时候,有些成员方法可以不用写出来,例如在这样一个表示时间的类中,拷贝构造...
    99+
    2024-04-02
  • C++运算符重载详情介绍
    文章转自公众号:Coder梁(ID:Coder_LT) C++当中除了函数可以重载之外,其实运算符也是可以重载的。我们之前已经接触过一些,可能大家没有意识到。 举个例子,乘号*,运用...
    99+
    2024-04-02
  • C++运算符重载限制介绍
    目录一、重载限制1.必须至少有一个操作数是用户定义的类型2.不能违反运算符原来的规则3.不能创建新运算符4.禁止名单5.部分运算符只能通过成员函数重载 文章转自公众号:Co...
    99+
    2024-04-02
  • 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
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作