iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
自我挑戰組

C++入門即放棄系列 第 24

[DAY24]我高你一個維度!

  • 分享至 

  • xImage
  •  

為什麼要用運算子多載?

  • 平常我們可以用 3 + 5,因為 int 已經支援 +
  • 但如果我們有 自訂類別(向量、複數、矩陣),就必須自己定義 +== 等操作
  • C++ 提供 運算子多載,讓我們能用自然的寫法

向量加法

#include <iostream>
using namespace std;
class Vector2D 
{
	public:
	    int x, y;
	    Vector2D operator+(const Vector2D& other) 
	    {
	        return Vector2D(x + other.x, y + other.y);
	    }
	    bool operator==(const Vector2D& other) 
	    {
	        return (x == other.x && y == other.y);
	    }
};
int main() 
{
    Vector2D v1(2, 3), v2(4, 1);
    Vector2D v3 = v1 + v2; 
    cout << "v3 = (" << v3.x << ", " << v3.y << ")" << endl;
    if (v1 == v2) 
    {
        cout << "v1 和 v2 相等" << endl;
    } 
    else 
    {
        cout << "v1 和 v2 不相等" << endl;
    }
    return 0;
}

有些地方須注意

  • 並不是所有運算子都能多載,例如 .?:sizeof 不能。
  • 運算子多載不會自動提升效能,只是讓程式更「好讀、好寫」。
  • 常用的多載:
    • +/(數學類別)
    • ==!=<(比較類別)
    • [](像陣列存取)
    • ()(函式呼叫運算子)
    • <<>>(輸出輸入)

結論

運算子多載能讓自訂類別

像內建型別一樣方便使用

如複數、向量、矩陣等數學物件

+- 就能進行運算

而不用自己寫一堆函式呼叫


上一篇
[DAY23]真真假假?
下一篇
[DAY25]我們來集合!
系列文
C++入門即放棄25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言