在 C++ 中重载加法运算符

Muhammad Adil 2022年7月18日
在 C++ 中重载加法运算符

运算符重载是一种程序员可以重新定义运算符含义的技术。它是一种机制,允许程序员通过为符号和关键字添加新含义来扩展其编程语言的语法。

运算符可分为一元、二元或三元。一元运算符采用一个操作数,二元运算符采用两个操作数,三元运算符采用三个操作数。

你可以使用 friend 函数、成员函数或普通函数重载运算符。本文将只关注在 C++ 中使用 friend 函数重载加法运算符。

friend 关键字在 C++ 语言中用于指定哪些类可以访问类的私有数据成员。重要的是要注意 friend 函数不是类成员,但被授予访问该类的部分或全部私有数据和函数的权限。

Friend 类通常用于为其他类提供帮助函数。friend 函数有时被称为非成员函数,因为它们不是类的成员。

在 C++ 中,如果要使用 friend 函数重载运算符,则需要将其声明为 friendfriend 声明告诉编译器该函数将与同一类的其他函数和对象一起使用。

在 C++ 中使用 friend 函数重载加法运算符

在 C++ 中,重载的加法运算符是一个二元运算符,它接受两个相同类型的操作数并对它们执行加法运算。

以下步骤用于使用 friend 函数在 C++ 中重载加法运算符:

  • 定义一个模板类,在派生类中可以调用 operator+()
  • 在派生类中定义一个重载加法运算符的 friend 函数。
  • 在模板类中定义要添加的重载运算符。
  • 为步骤 2 中定义的 friend 函数调用的派生类中的加法运算定义重载运算符。

示例代码:

#include <iostream>
class Demo
{
private:
    int e_demo {};
public:
    Demo(int demo) :
    e_demo{ demo } { }
    friend Demo operator+(const Demo& x1, const Demo& x2);
    int getDemo() const { return e_demo; }
};
Demo operator+(const Demo& x1, const Demo& x2)
{
    return Demo{x1.e_demo + x2.e_demo};
}
int main()
{
    Demo demo1{ 5 };
    Demo demo2{ 5 };
    Demo demoSum{ demo1 + demo2 };
    std::cout << "Total Count is " << demoSum.getDemo();
    return 0;
}

输出:

Total Count is 10

点击这里查看上述代码的演示。

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook

相关文章 - C++ Operator