>백엔드 개발 >C++ >친구 함수가 다른 친구 함수를 호출할 수 있나요?

친구 함수가 다른 친구 함수를 호출할 수 있나요?

王林
王林원래의
2024-04-15 22:45:01337검색

친구 기능으로 서로 전화를 걸 수 있습니다. 프렌드 함수는 클래스의 프라이빗 멤버 변수와 프라이빗 메서드에 액세스할 수 있는 특수 함수로, 서로의 프라이빗 데이터에 액세스할 수 있는 밀접하게 관련된 함수 그룹을 생성할 수 있습니다. 친구 함수는 일반 함수처럼 서로를 호출할 수 있습니다.

친구 함수가 다른 친구 함수를 호출할 수 있나요?

친구 기능이 서로 호출할 수 있나요?

Friend 함수는 클래스의 전용 멤버 변수와 전용 메서드에 액세스할 수 있는 C++의 특수 함수입니다. Friends라는 단어는 이름에서 알 수 있듯이 친근한 관계를 의미합니다. 그렇다면 친구 함수가 서로 호출할 수 있나요?

답은 '예'입니다.

친구 기능은 서로를 호출할 수 있다는 점이 친구 기능의 장점 중 하나입니다. 이를 통해 서로의 개인 데이터에 액세스할 수 있는 밀접하게 관련된 일련의 기능을 만들 수 있습니다.

Syntax

다른 친구 함수를 호출하기 위해 친구 함수를 선언하는 구문은 일반 함수 호출과 유사합니다. 예:

class MyClass {
    friend void func1();
    friend void func2();
};

void func1() {
    func2(); // 调用友元函数 func2
}

실용 사례

다음은 친구 함수를 사용하여 서로 호출하는 간단한 예입니다.

#include <iostream>

class ComplexNumber {
    private:
        double real, imag;

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

        // 以下声明为友元函数
        friend std::ostream& operator<<(std::ostream&, const ComplexNumber&);
        friend bool operator==(const ComplexNumber&, const ComplexNumber&);
};

// 友元函数重载运算符 <<
std::ostream& operator<<(std::ostream& os, const ComplexNumber& z) {
    os << z.real << " + " << z.imag << "i";
    return os;
}

// 友元函数重载运算符 ==
bool operator==(const ComplexNumber& z1, const ComplexNumber& z2) {
    // 友元函数可以访问私有成员变量 real、imag
    return z1.real == z2.real && z1.imag == z2.imag;
}

int main() {
    ComplexNumber z1(1.2, 3.4), z2(1.2, 3.4);

    std::cout << z1 << " == " << z2 << " : " << std::boolalpha << (z1 == z2) << std::endl;

    return 0;
}

Output

1.2 + 3.4i == 1.2 + 3.4i : true

이 예에서는 친구 함수 operator 和 <code>operator== 可以相互调用,以重载运算符 和 <code>==입니다.

위 내용은 친구 함수가 다른 친구 함수를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.