在 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