Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

추출 연산자를 오버로드하는 C++ 프로그램

<시간/>

first_name과 last_name이라는 두 개의 속성을 가진 Person 클래스가 있다고 가정합니다. 또한 get_first_name() 및 get_last_name()이라는 두 가지 메서드가 있어 각각 이름과 성을 검색하거나 설정합니다. cout 문을 사용하여 이름과 성을 출력하려면 추출 연산자(<<)를 오버로드해야 합니다.

따라서 입력이 이름과 성이 있는 사람 개체("Sumit", "Ray")와 같으면 출력은 First name − Sumit, Last name − Ray가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 추출 연산자를 오버로드하려면 클래스 외부에서 정의해야 합니다.

  • 반환 유형은 ostream 참조가 됩니다.

  • 입력 매개변수는 ostream 참조 변수 os 및 개체 참조 변수입니다.

  • os를 사용하여 개체의 모든 부분을 적절한 순서로 추출

  • OS 개체 참조를 반환합니다.

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
using namespace std;
class Person {
    private:
        string f_name;
        string l_name;
    public:
        Person(string first_name, string last_name) : f_name(first_name), l_name(last_name) {}
        string& get_first_name() {
          return f_name;
        }
        string& get_last_name() {
          return l_name;
        }
};
ostream& operator<<(ostream& os, Person& p) {
    os << "First name: " << p.get_first_name() << ", Last name: " << p.get_last_name();
    return os;
}
int main(){
   Person p("Sumit", "Ray");
   
   cout << p << ", he is our member.";
}

입력

p("Sumit", "Ray")

출력

First name: Sumit, Last name: Ray, he is our member.