c++

c++ class类运算符重载怎么做

小樊
83
2024-09-24 23:41:16
栏目: 编程语言

在 C++ 中,你可以通过定义特殊的成员函数来重载类运算符。这些成员函数以关键字 operator 开头,后面紧跟要重载的运算符,然后是括号,括号内可以包含参数列表(如果有的话)。下面是一些常见的运算符重载示例:

  1. 重载 + 运算符:
class MyClass {
public:
    int value;

    MyClass(int v) : value(v) {}

    MyClass operator+(const MyClass& other) const {
        return MyClass(value + other.value);
    }
};

int main() {
    MyClass a(1);
    MyClass b(2);
    MyClass c = a + b; // 使用重载的 + 运算符
    return 0;
}
  1. 重载 == 运算符:
class MyClass {
public:
    int value;

    MyClass(int v) : value(v) {}

    bool operator==(const MyClass& other) const {
        return value == other.value;
    }
};

int main() {
    MyClass a(1);
    MyClass b(1);
    MyClass c(2);

    if (a == b) {
        std::cout << "a and b are equal" << std::endl;
    } else {
        std::cout << "a and b are not equal" << std::endl;
    }

    if (a != c) {
        std::cout << "a and c are not equal" << std::endl;
    } else {
        std::cout << "a and c are equal" << std::endl;
    }

    return 0;
}
  1. 重载 << 运算符(用于输出):
#include <iostream>

class MyClass {
public:
    int value;

    MyClass(int v) : value(v) {}

    friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
        os << obj.value;
        return os;
    }
};

int main() {
    MyClass a(1);
    std::cout << "a: "<< a << std::endl; // 使用重载的 << 运算符
    return 0;
}

注意:当重载 << 运算符时,通常将其声明为 friend 函数,以便能够访问类的私有和保护成员。

0
看了该问题的人还看了