ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 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 << "보라색 맞음";
        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 << "보라색 아님";
    }


    실행결과



    외부함수라면 자신을 하나 더 넘겨주어야합니다.

    '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

    댓글

© 2018 TISTORY. All rights reserved.