温馨提示×

C++友元类与运算符重载

c++
小樊
82
2024-11-08 22:34:25
栏目: 编程语言

在C++中,友元类和运算符重载是两个不同的概念,但它们都可以用来实现类似的功能。让我们分别了解它们。

  1. 友元类(Friend Class):

友元类是指一个类允许其他类或函数访问其私有和保护成员。这可以通过在类定义中使用friend关键字来实现。友元类可以访问类的所有成员,包括私有和保护成员。

示例:

#include <iostream>

class A {
private:
    int x;

public:
    A(int a) : x(a) {}

    // 声明B为友元类
    friend class B;
};

class B {
public:
    void printX(const A& obj) {
        std::cout << "x = " << obj.x << std::endl;
    }
};

int main() {
    A objA(10);
    B objB;
    objB.printX(objA); // 输出:x = 10
    return 0;
}
  1. 运算符重载(Operator Overloading):

运算符重载是指为已有的运算符赋予新的含义,使其适用于自定义的数据类型。在C++中,可以通过在类定义中使用运算符重载声明来实现。运算符重载可以使得代码更简洁、易读。

示例:

#include <iostream>

class Complex {
private:
    double real;
    double imag;

public:
    Complex(double r, double i) : real(r), imag(i) {}

    // 重载加法运算符
    Complex operator+(const Complex& other) const {
        return Complex(real + other.real, imag + other.imag);
    }
};

int main() {
    Complex c1(3, 4);
    Complex c2(1, 2);
    Complex c3 = c1 + c2; // 输出:(4, 6)
    return 0;
}

总结:

  • 友元类允许其他类或函数访问其私有和保护成员。
  • 运算符重载为已有的运算符赋予新的含义,使其适用于自定义的数据类型。
  • 两者都可以用来实现类似的功能,但它们的目的和使用场景不同。

0