소개:
연산자 오버로딩을 사용하면 << 사용자 정의 클래스로 작업합니다. 질문이 생깁니다: 연산자<< 클래스 내에서 친구 함수 또는 멤버 함수로 구현됩니까?
ostream& operator<<(ostream &os, const obj& rhs);
장점:
friend ostream &operator<<(ostream &os, const obj& rhs);
장점:
동등 연산자(예: ==, !=)의 경우 멤버 함수가 선호되는 이유는 다음과 같습니다.
스트림 연산자(<<, >>)의 경우, 친구 기능이 필요합니다:
예:
전용 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!