[Hackerrank] C++ - 33 Overloading Ostream Operator

후유카와·2024년 11월 22일

Hackerrank

목록 보기
31/59

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.

profile
안녕하세요! 저는 전자공학을 전공하며 하드웨어와 소프트웨어 모두를 깊이 있게 공부하고 있는 후유카와입니다. Verilog HDL, C/C++, Java, Python 등 다양한 프로그래밍 언어를 다루고 있으며, 최근에는 알고리즘에 대한 학습에 집중하고 있습니다. 기술적인 내용을 공유하고, 함께 성장할 수 있는 공간이 되기를 바랍니다. 잘못된 내용이나 피드백은 언제나 환영합니다! 함께 소통하며 더 나은 지식을 쌓아가요. 감사합니다!

0개의 댓글