美文网首页C++
笔记05:C++中的重载运算

笔记05:C++中的重载运算

作者: Wayne_Dream | 来源:发表于2018-11-10 12:00 被阅读0次

在C++中,当运算符被用于类类型的对象时,它允许我们为其指定新的含义。通过重载的方式,能使表达更加简洁明了。
下面通过一个例子来总结运算符的重载问题:

#include <iostream>
#include <typeinfo>
#include <string>
using namespace std;

struct plural   //定义一个复数的结构体。
{
    int rel = 0;
    int img = 0;
};
ostream &operator <<(ostream &os, plural &p)
//重载输出运算符
{
    os << p.rel << "+j" << p.img << endl;
    return os;
}

plural operator +(plural &p1, plural &p2)
//重载加法运算符
{
    plural p3;
    p3.rel = p1.rel + p2.rel;
    p3.img = p1.img + p2.img;
    return p3;
}

int main()
{
    plural p1, p2;
    p1.rel = 1, p1.img = 2;
    p2.rel = 2, p2.img = 5;
    cout << p1 + p2 << endl;
    system("pause");
    return 0;
}


输出: 3+j7

在以上代码中可以看到,先通过定义一个复数的结构体,确定了其虚部和实部。然后通过对“<<”和“+”运算符的重载来实现复数的输出和加法。

函数类型  operator 运算符(形参表)

{

     函数体

}

重载的基本模板。

  • 在重载的同时还需知道几条基本的原则:

1.不能改变运算符的初始意义。

2.不能改变运算符的参数数目。如重载运算符+时只用一个操作数是错误的。

3.运算符函数不能包括缺省的参数。

4.绝大部分C++运算符都可以重载,除以下的例外:

:: ,.*, .,?:

5.除赋值运算符外,其它运算符函数都可以由派生类继承。

6.运算符重载不改变运算符的优先级和结合性,也不改变运算符的语法结构,即单目、双目运算符只能重载为单目、双目运算符。

7.运算符的重载实际上是函数的重载。编译程序对运算符重载的选择,遵循函数重载的选择原则。当遇到不很明显的运算符时,编译程序将去寻找参数匹配的运算符函数。

8.运算符重载可使程序更简洁,使表达式更直观,增强可读性。但使用不宜过多。

相关文章

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 笔试刷题笔记

    C++中运算符重载是多态性的一种表现 运算符重载是针对C++原有运算符进行的,不可能通过重载创造出新的运算符 除了...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • C++ 运算符重载

    运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++运算符已经重载。将*运算符用...

  • 运算符重载

    一、运算符重载的概念 重载运算符的概念 C++中的表达式由运算符和操作数按照规则构成。 运算符重载就是给已有的运算...

  • 笔记05:C++中的重载运算

    在C++中,当运算符被用于类类型的对象时,它允许我们为其指定新的含义。通过重载的方式,能使表达更加简洁明了。下面通...

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

网友评论

    本文标题:笔记05:C++中的重载运算

    本文链接:https://www.haomeiwen.com/subject/pldzxqtx.html