예, 친구 함수는 다른 함수와 마찬가지로 오버로드된 친구 함수에도 다른 매개변수 목록이 있어야 합니다. 예를 들어, 오버로드된 친구 함수 연산자+() 및 연산자 -()가 있는 Vector3D 클래스는 덧셈과 뺄셈을 허용합니다. Vector3D 객체에 적용할 연산자입니다.
친구 함수와 C++의 오버로드 간의 관계
친구 함수
친구 함수는 다른 클래스의 비공개 멤버에 액세스할 수 있는 특별한 유형의 함수입니다. 즉, 클래스의 멤버 함수는 아니지만 멤버 함수와 동일한 접근 권한을 갖는다.
친구 함수 정의:
class ClassName { // ... friend function_name(); };
오버로딩
오버로딩은 동일한 범위에서 이름은 같지만 매개변수 목록이 다른 여러 함수를 만드는 기능입니다. 즉, 오버로드된 함수가 호출되면 컴파일러는 인수에 따라 호출할 함수를 결정합니다.
친구 기능과 오버로드 간의 상호 작용
친구 기능은 오버로드될 수 있습니다. 다른 함수와 마찬가지로 오버로드된 친구 함수에는 다른 매개변수 목록이 있어야 합니다.
실용 사례
예제 클래스:
class Vector3D { double x, y, z; public: Vector3D(double x, double y, double z) : x(x), y(y), z(z) {} friend Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs); friend Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs); };
오버로드된 친구 함수:
Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs) { return Vector3D(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z); } Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs) { return Vector3D(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z); }
사용법:
Vector3D v1(1, 2, 3), v2(4, 5, 6); Vector3D v3 = v1 + v2; // 调用重载的友元函数 operator+() Vector3D v4 = v1 - v2; // 调用重载的友元函数 operator-()
이 예에서는 덧셈과 뺄셈 연산자를 사용하여 Vector3D
类及其重载的友元函数 operator+()
和 operator-()
。这些友元函数允许我们对 Vector3D
객체를 정의합니다. .
위 내용은 C++ 친구 함수와 오버로딩 간의 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!