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.
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
[Hackerrank] 35. Accessing Inherited Functions (0) | 2024.02.27 |
---|---|
[Hackerrank] 34. Messages Order (2) | 2024.02.27 |
[Hackerrank] 32. Multi Level Inheritance (0) | 2024.02.27 |
[Hackerrank] 31. Rectangle Area (0) | 2024.02.26 |
[Hackerrank] 30. Cpp exception handling (2) | 2024.02.26 |