본문 바로가기

프로그래밍 언어/C, C++

[Hackerrank] 33. Overloading Ostream Operator

33. Overloading Ostream Operator

[ 난이도: Medium | 분야: Debugging ]

1. 과제

이번 챌린지에서 해야할 것은 << 연산자를 Person 클래스에 대해 오버로드 한 뒤, Person 클래스의 인스턴스인 p에 대해 다음과 같은 결과를 출력해야 한다:

cout << p << " " << <some_string_value> << endl;

다음의 출력을 생성한다:

first_name=<first_name>,last_name=<last_name> <some_string_value>

여기에서:

- <first_name>은 p의 first_name_이다.

- <last_name>은 p의 last_name_이다.

- <some_string_value>는 임의의 string value이다.

Input Format

입력은 제공된 잠겨있는 코드 탬플릿에서 읽는다. 오직 단일줄로 공백으로 구분된 3 가지 입력이 있다.(fist_name, last_name, event)

first_name과 last_name의 값은 Person 타입의 객체 p를 생성하는데 사용된다.

event 값은 출력을 생성하는데 사용된다.

 

Constraints

- 입력의 각 단어는 모두 영어 단어이고 15자가 넘지 않는다.

 

Output Format

출력은 제공된 코드 탬플릿의 잠겨있는 부분을 통해 제공한다.

이 코드는 Person 클래스를 public으로 받고 출력을 만들기 위해 << 연산자를 오버로드한다.

특히, 출력은 아래의 코드를 따른다.

cout << p << " " << event << endl;

 

Sample Input0

john doe registered

 

Sample Output0

first_name=john, last_name=doe registered

 

문제

#include <iostream>

using namespace std;

class Person {
public:
    Person(const string& first_name, const string& last_name) : first_name_(first_name), last_name_(last_name) {}
    const string& get_first_name() const {
      return first_name_;
    }
    const string& get_last_name() const {
      return last_name_;
    }
private:
    string first_name_;
    string last_name_;
};
// Enter your code here.


int main() {
    string first_name, last_name, event;
    cin >> first_name >> last_name >> event;
    auto p = Person(first_name, last_name);
    cout << p << " " << event << endl;
    return 0;
}
더보기

정답

#include <iostream>

using namespace std;

class Person {
public:
    Person(const string& first_name, const string& last_name) : first_name_(first_name), last_name_(last_name) {}
    const string& get_first_name() const {
      return first_name_;
    }
    const string& get_last_name() const {
      return last_name_;
    }
private:
    string first_name_;
    string last_name_;
};
// Enter your code here.

ostream& operator<<(ostream& os, const Person& p)
{
    os << "first_name=" << p.get_first_name() << ",last_name=" << p.get_last_name();
    return os;
}


int main() {
    string first_name, last_name, event;
    cin >> first_name >> last_name >> event;
    auto p = Person(first_name, last_name);
    cout << p << " " << event << endl;
    return 0;
}

 

 

 

 

 

 

©️Hackerrank. All Rights Reserved.