본문 바로가기
programming/명품 C++ programming

명품 C++ programming 실습 문제 7장 5번

by doachy 2020. 8. 16.

제.

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 << "보라색 맞음";
    else
        cout << "보라색 아님";
}

 

(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 << "보라색 맞음";
    else
        cout << "보라색 아님";
}

 

 

(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 << "보라색 맞음";
    else
        cout << "보라색 아님";
}

 

**프렌드 함수는 외부 함수이므로 비교 대상 외의 자신을 변수로 추가해야 합니다.

댓글