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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include "stdafx.h" #include <cstdio> #define FUNC(X) X*X*X using namespace std; class cl1 { public: int a; int b; cl1() { a = 0; b = 0; } cl1(int aa, int bb) { a = aa; b = bb; } cl1 operator+(cl1 &ref) { return cl1(a + ref.a, b + ref.b); } cl1 operator+(int sam) { return cl1(a + sam, b + sam); } }; // 전역 선언은 양쪽 연산 가능하게 한다 cl1 operator+(int num, cl1 sam) { return cl1(sam.a + num, sam.b + num); } template<class T> class queue { private: T data1; public: T adddata(T da); queue(T da); T getdata(); }; template<class T> T queue<T>::getdata() { return data1; } template<class T> T queue<T>::adddata(T da) { return da + data1; } template<class T> queue<T>::queue(T da) { data1 = da; } int main() { queue<double> q1(3.14); cl1 sam2(23,24); // 생성자에 넣으려면 미리 선언한 후에 그 변수를 삽입 queue<cl1> q2(sam2); cl1 sam = q2.getdata(); printf("%i %i\n", q2.getdata().a, q2.getdata().b); sam = sam2; printf("%d %d\n", sam.a, sam.b); printf("%f\n", q1.adddata(1.0)); sam = q2.adddata(sam2); // 10+nb1 은 10.operator+(nb1)과 동치 printf("%d %d\n", sam.a, sam.b); printf("%d\n", FUNC(3)); sam = sam.operator+(32); // 클래스 대입 가능하다. 서로 독립적 sam = sam + 32; sam = 32 + sam; printf("%d %d\n", sam.a, sam.b); while (1) {} return 0; } | cs |
'2019 > c++' 카테고리의 다른 글
relational data structures & strings (C++ STL) (0) | 2018.03.21 |
---|---|
dynamic allocation of 2-dimension array (0) | 2018.03.20 |
c++ reference variables (0) | 2018.03.18 |
time&chronos (0) | 2018.03.17 |
basic data structures (0) | 2018.03.17 |