C++/Operator Overloading

클래스로 cout 구현하기 (2가지 version)

(19080)

COUT 클래스를 만들어 정수, double, 그리고 스트링을 출력할 수 있게한다.
COUT클래스 내부에서는 출력을 위해 printf를 사용한다.


<COUT1.cpp>


#include <iostream>
class COUT{
        public:
                COUT():data_(0){}
                int getValue() { return data_; }
                COUT operator<<(COUT i){
                        printf("%d\n", getValue());
                }

                COUT operator<<(double d){
                        printf("%f\n",d);
                }

                COUT operator<<(std::string s){
                        std::cout<<s<<std::endl; //??
                }

        private:
                int data_;
};

int main(){
        COUT cout;
        cout<<99;
        cout<<"Hello world";
        cout<<3.14;
}


(19090)

version 2] main함수 다름 (cout<<999<<"Hello world"<<3.14; )


<COUT2.cpp>

 

#include <iostream>
class COUT{
        public:
                COUT():data_(0){}
                COUT operator<<(int i){
                        printf("%d\n",i);
                }

                COUT operator<<(double d){
                        printf("%f\n",d);
                }

                COUT operator<<(std::string s){
                        std::cout<<s<<std::endl; //??
                }
        private:
                int data_;
};

int main(){
        COUT cout;
        //cout<<99;
        //cout<<"Hello world";
        //cout<<3.14;
        cout<<999<<"Hello world"<<3.14;
}

'C++ > Operator Overloading' 카테고리의 다른 글

cout 의 범위를 넖히는 연산자 overloading  (0) 2021.01.24
단항 연산자 정의  (0) 2021.01.24