> 백엔드 개발 > C++ > 친구 또는 회원 기능: 언제 `연산자를 사용해야 할까요?

친구 또는 회원 기능: 언제 `연산자를 사용해야 할까요?

DDD
풀어 주다: 2024-12-08 04:45:11
원래의
1057명이 탐색했습니다.

Friend or Member Function: When Should `operator

연산자를 구현하는 경우<< 친구 또는 회원 기능

소개:

연산자 오버로딩을 사용하면 << 사용자 정의 클래스로 작업합니다. 질문이 생깁니다: 연산자<< 클래스 내에서 친구 함수 또는 멤버 함수로 구현됩니까?

멤버 함수 vs. 친구 함수

멤버 함수

ostream& operator<<(ostream &os, const obj& rhs);
로그인 후 복사

장점:

  • 수업 비공개로 직접 접속 회원
  • 클래스 내 스트리밍 로직 캡슐화

친구 기능

friend ostream &operator<<(ostream &os, const obj& rhs);
로그인 후 복사

장점:

  • 여러 클래스에서 사용 가능
  • 자동 입력이 용이함 두 피연산자 변환

결정의 근거

동등 연산자

동등 연산자(예: ==, !=)의 경우 멤버 함수가 선호되는 이유는 다음과 같습니다.

  • 수업의 비공개 정보에 직접 접근할 수 있습니다. data.
  • 동등 비교를 위해 클래스의 내부 표현을 적용합니다.

스트림 연산자

스트림 연산자(<<, >>)의 경우, 친구 기능이 필요합니다:

  • 다양한 유형의 객체에 대해 작동합니다(예: ostream 및 사용자 정의 클래스).
  • 연결된 작업을 위해 스트림 객체에 대한 참조를 반환합니다.

예:

전용 m_para 문자열 멤버가 있는 단락 클래스입니다. 우리는 연산자<<를 구현하고 싶습니다. 단락의 텍스트를 인쇄하려면:

class Paragraph {
public:
    Paragraph(const string& init) : m_para(init) {}
    const string& to_str() const { return m_para; }
    bool operator==(const Paragraph& rhs) const { return m_para == rhs.m_para; }
    friend ostream &operator<<(ostream &os, const Paragraph& p);

private:
    string m_para;
};

ostream &operator<<(ostream &os, const Paragraph& p) {
    return os << p.to_str();
}
로그인 후 복사

이 예에서는 연산자<< 다른 유형에서 작동하고 스트림 참조를 반환하기 때문에 친구 함수로 구현됩니다. to_str() 메소드는 비공개 m_para 멤버에 액세스하고 이를 출력용 문자열로 변환하는 데 사용됩니다.

위 내용은 친구 또는 회원 기능: 언제 `연산자를 사용해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿