>  기사  >  백엔드 개발  >  C++ 친구 함수와 오버로딩 간의 관계

C++ 친구 함수와 오버로딩 간의 관계

WBOY
WBOY원래의
2024-04-16 11:06:02483검색

예, 친구 함수는 다른 함수와 마찬가지로 오버로드된 친구 함수에도 다른 매개변수 목록이 있어야 합니다. 예를 들어, 오버로드된 친구 함수 연산자+() 및 연산자 -()가 있는 Vector3D 클래스는 덧셈과 뺄셈을 허용합니다. Vector3D 객체에 적용할 연산자입니다.

C++ 友元函数与重载的关系

친구 함수와 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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