개체 출력자 실습 – 회원 클래스 및 쉬프트 연산자 중복 정의 [C++]

안녕하세요. 언제나 휴일에 언휴예요.

이번 실습에서는 개체 출력자를 구현합니다.

C++에서 출력을 위해 ostream 형식을 정의하고 있어요. cout이 대표적인 ostream 형식 개체죠.

개체 출력자는 ostream 형식 개체를 이용하여 개체 정보를 출력할 수 있게 정의하는 코드 집합을 개체 출력자라 부릅니다.

이번 실습에서는 회원 클래스를 정의하고 개체 출력자를 정의할 거예요.

기본 형식처럼 회원 개체 정보를 ostream 형식 개체로 출력할 수 있게 구현하는 실습입니다.

/* https://ehpub.co.kr 
   C++ 예제 - 언제나 휴일
   개체 출력자 - 회원 클래스
*/
#include 
#include 
using namespace std;

class Member
{
    int num;
    string name;
public:
    Member(int num, string name)
    {
        this->num = num;
        this->name = name;
    }
    int GetNum()const
    {
        return num;
    }
    string GetName()const
    {
        return name;
    }
    void View(ostream& os = cout)const
    {
        os << "번호:" << num << " 이름:" << name;
    }

};
ostream &operator<<(ostream& os, const Member& member)
{
    member.View(os);
    return os;
}
ostream& operator<<(ostream& os, const Member* member)
{
    member->View(os);
    return os;
}
int main()
{    
    Member member(3, "홍길동");
    Member *member2 = new Member(2, "강감찬");
    
    cout << member << endl;
    cout << member2 << endl;

    delete member2;
    return 0;
}

실행 결과는 다음과 같습니다.

번호:3 이름:홍길동
번호:2 이름:강감찬