code/C++

[c++] 연산자 함수

shallot 2017. 4. 20. 14:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<iostream>
#include<cstring>
#pragma warning(disable:4996)
using namespace std;
 
class A{
    int a;
public:
    A(int a=1){
        this->a=a;
    }
    void setA(int a){
        this->a=a;
    }
    int getA()const{
        return a;
    }
    /*int operator+(const A &bb){
        return a+bb.a;
    }*/
    int operator+(int a){
        return this->a+a;
    }
    friend ostream& operator<<(ostream &out,const A &aa);
    friend istream& operator>>(istream &in, A &aa);
};
    //int operator+(const A &aa,const A &bb){
        //return aa.getA()+bb.getA();
//}
//int operator+(int a,const A &aa){
        //return a+aa.a;
    //}
ostream& operator<<(ostream &out,const A &aa){
    out<<aa.a;
    return out;
    }
istream& operator>>(istream &in,A &aa){
    in>>aa.a;
    return in;
    }
void main(){
    A aa;
    A bb(9);
    //cout<<aa.getA()+bb.getA()<<endl;
    //cout<<aa+bb<<endl;//aa.operator+(bb)//내부
                      //operator+(aa,bb)//외부
 
 
    //cout<<aa+40<<endl;//멤버함수
    //cout<<40+aa<<endl;//외부함수->friend써야함
 
    cout<<aa;//operator<<(cout,aa);
    cout<<bb;
    cout<<aa<<bb<<endl;//void형이면 aa까지 가고 void<<bb로 인식됨.
 
 
    cin>>aa>>bb;//100,200
    cout<<aa<<bb;
}