1. 문제
3. 다음 연산을 통해 공짜 책인지를 판별하도록 ! 연산자를 작성하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
using namespace std;
class Book {
string title;
int price, pages;
public :
Book(string title="", int price=0, int pages=0) {
this->title = title; this->price = price; this->pages = pages;
}
void show() {
cout << title << ' ' << price << "원 " << pages << " 페이지" << endl;
}
string getTitle() { return title; }
bool operator !() {
if( price == 0 ) return true;
else false;
}
};
int main() {
Book book("벼룩시장", 0, 50);
if( !book ) cout << "공짜다" << endl;
}
4. 설명
"!" 연산자는 return 타입이 bool 입니다.
"!"이 실행되면 클래스 변수의 price 값이 0인지 비교를한 후 만약 0이라면 return true;를 아니라면 return false;를 해줍니다.
1. 문제
4. 다음 연산을 통해 책의 제목을 사전 순으로 비교하고자 한다. < 연산자를 작성하라.
2. 결과
3. 코드
#include <iostream>
#include <string>
using namespace std;
class Book {
string title;
int price, pages;
public :
Book(string title="", int price=0, int pages=0) {
this->title = title; this->price = price; this->pages = pages;
}
void show() {
cout << title << ' ' << price << "원 " << pages << " 페이지" << endl;
}
string getTitle() { return title; }
friend bool operator < (string s, Book b);
};
bool operator < (string s, Book b) {
if( s < b.title ) return true;
else return false;
}
int main() {
Book a("청춘", 20000, 300);
string b;
cout << "책 이름을 입력하세요>>";
getline(cin, b);
if( b < a )
cout << a.getTitle() << "이 " << b << "보다 뒤에 있구나!" << endl;
}
4. 설명
'<' 연산자를 프렌드 함수로 구현하였습니다.
이 문제의 경우에는 string 변수 < Book 클래스 변수 이므로 프렌드 함수로 구현을 해야만 합니다.
-> Book 클래스 < string 변수 였다면 클래스 멤버 함수로 구현할 수 있습니다.
'<' 구현 함수에서는 string 변수 s와 Book 클래스 변수 b의 title을 '<'를 사용하여서 참이면 return true;를 아니라면 return false;를 해줍니다.
-> string변수이므로 사전식 순서 입니다. [ 뒤로 갈수록 더 큰 값 입니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 7장 6번 (0) | 2019.04.17 |
---|---|
명품 C++ programming 실습문제 7장 5번 (0) | 2019.04.16 |
명품 C++ programming 실습문제 7장 2번 (0) | 2019.04.16 |
명품 C++ programming 실습문제 7장 1번 (0) | 2019.04.15 |
명품 C++ programming 6장 Open Challenge (0) | 2019.04.14 |