-
명품 C++ 7장 5번C++ 2018. 11. 3. 13:14
5. 다음 main()에서 Color 클래스는 3요소(빨강, 초록, 파랑)로 하나의 색을 나타내는 클래스이다(4장 실습 문제 1번참고). + 연산자로 색을 더하고, == 연산자로 색을 비교하고자 한다. 실행결과를 참고하여 Color 클래스와 연산자, 그리고 프로그램을 완성하라.
int main() {Color red(255, 0, 0), blue(0, 0, 255), c;c = red + blue;c.show(); // 색 값 출력Color fuchsia(255, 0, 255);if (c == fuchsia)cout << "보라색 맞음";elsecout << "보라색 아님";}1) +와 == 연산자를 Color 클래스의 멤버 함수로 구현하라.
소스코드
#include <iostream>using namespace std;class Color {int red, green, blue;public:Color() { red = green = blue = 0; }Color(int r, int g, int b) { red = r; green = g; blue = b; }void setColor(int r,int g, int b) { red = r; green = g; blue = b; }void show() { cout << red << ' ' << green << ' ' << blue << endl; }Color operator+(Color op2);bool operator==(Color op2);};Color Color::operator+(Color op2) {Color tmp;tmp.red = this->red + op2.red;tmp.green = this->green + op2.green;tmp.blue = this->blue + op2.blue;return tmp;}bool Color::operator==(Color op2) {if (this->red == op2.red&&this->green == op2.green&&this->blue == op2.blue)return true;else return false;}int main() {Color red(255, 0, 0), blue(0, 0, 255), c;c = red + blue;c.show(); // 색 값 출력Color fuchsia(255, 0, 255);if (c == fuchsia)cout << "보라색 맞음";elsecout << "보라색 아님";}2) +와 ==연산자를 Color 클래스의 프렌드 함수로 구현하라.
소스코드
#include <iostream>using namespace std;class Color {int red, green, blue;public:Color() { red = green = blue = 0; }Color(int r, int g, int b) { red = r; green = g; blue = b; }void setColor(int r,int g, int b) { red = r; green = g; blue = b; }void show() { cout << red << ' ' << green << ' ' << blue << endl; }friend Color operator+(Color op1,Color op2);friend bool operator==(Color op1, Color op2);};Color operator+(Color op1, Color op2) {Color tmp;tmp.red = op1.red + op2.red;tmp.green = op1.green + op2.green;tmp.blue = op1.blue + op2.blue;return tmp;}bool operator==(Color op1, Color op2) {if (op1.red == op2.red&&op1.green == op2.green&&op1.blue == op2.blue)return true;else return false;}int main() {Color red(255, 0, 0), blue(0, 0, 255), c;c = red + blue;c.show(); // 색 값 출력Color fuchsia(255, 0, 255);if (c == fuchsia)cout << "보라색 맞음";elsecout << "보라색 아님";}실행결과
외부함수라면 자신을 하나 더 넘겨주어야합니다.
'C++' 카테고리의 다른 글
명품 C++ 7장 7번 (0) 2018.11.03 명품 C++ 7장 6번 (0) 2018.11.03 명품 C++ 7장 1번 2번 3번 4번 (0) 2018.11.03 명품 C++ 6장 Open Challenge (0) 2018.11.02 명품 C++ 6장 9번 (0) 2018.11.02