홈
|
지역로그
|
태그
|
미디어로그
|
방명록
|
관리자
|
글쓰기
Welcome
Operator overloading
프로그래밍 언어/CPP
2014. 7. 11. 01:25
Class에 +,- 등의 연산자를 쓸 수 있게 하는 문법
#include <iostream> using namespace std; class overloading { public: int x; int y; overloading(int _x = 0, int _y = 0):x(_x),y(_y){} void Print() const { std::cout << x << ",\t" << y << std::endl;} overloading operator+(overloading& a) { return overloading(x+a.x, y+a.y); } overloading operator+(int a) { return overloading(x+a, y+a); } bool operator==(const overloading& a) { return( (x==a.x)&&(y==a.y) ); } // ++this const overloading& operator++() { x++; y++; return *this; } // this++ const overloading& operator++(int) { overloading temp(x, y); x++; y++; return temp; } // this() void operator()() { Print(); } // this[index] int operator[](int idx) { if( idx == 0) {std::cout << " x : " << x << std::endl;return x;} else std::cout << " y : " << y << std::endl; return y; } // (int)this operator int() { cout << "type int" << endl; return x;} }; // Smart overloading class overloadingPtr { overloading *ptr; public: explicit overloadingPtr(overloading* p):ptr(p){} ~overloadingPtr() { if( ptr != NULL) delete ptr; } overloading* operator->() { return ptr; } overloading& operator*() { return *ptr; } }; // 전역 오버로딩 const overloading operator*(const overloading& a, const overloading& b) { int x; int y; x = a.x*b.x; y = a.y*b.y; return overloading(x,y); } const overloading operator*(const int& a, const overloading& b) { int x; int y; x = a*b.x; y = a*b.y; return overloading(x,y); } int main_Overloading() { overloading a(12,13), b(15,16); a.Print(); b.Print(); std::cout << "--------------" << std::endl; a.operator+(b); (a+b).Print(); operator*(a,b); (a*b).Print(); a.operator+(10); (a+10).Print(); operator*(10,a); (10*a).Print(); a++; a.Print(); ++a; a.Print(); if( a==b) a.Print(); else std::cout << "a, b different" << std::endl; // operator() a(); // operator[] a[0]; a[1]; // Error // overloadingPtr p1 = new overloading(1,2); overloadingPtr p1(new overloading(1,2)); p1->Print(); (*p1).Print(); (int)a; return 0; }
공유하기
게시글 관리
Welcome
저작자표시
비영리
변경금지
Posted by
crownog
,
공부도하고 리뷰도하는 개인 블로그
crownog
카테고리
My story
(44)
프로젝트
(0)
잡담
(0)
게임
(2)
웹프로그래밍
(0)
PHP
(0)
JavaScript
(0)
프로그래밍 언어
(14)
Action Script 2.0
(6)
C#
(1)
CPP
(1)
CPP STL
(0)
AI
(0)
Boost
(3)
Node JS
(2)
OpenCL
(0)
알고리즘
(1)
라이브러리
(20)
OpenGL
(18)
Direct9
(0)
DirectX11
(0)
Tcp IP
(1)
XNA
(1)
그외
(0)
개발툴
(1)
Unity
(1)
리뷰
(5)
사진
(0)
버그 - 문제점
(0)
최근글
최근댓글
최근 트래백
글보관함
total :
today :
yesterday :
티스토리 가입하기!
진행중인 일정 및 프로젝트
달력
«
2025/01
»
일
월
화
수
목
금
토
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
태그목록
XNA
Selection Sort
OpenGL
아이온
텍스쳐
updateAfterEvent
Action Script 2.0
Bubble Sort
Sorting
C9
프로그래밍
State Variable
MovieClip
플래시
게임
texture
Pipeline
Insertion Sort
GLUT
링크
Game Story of crown.
아래 아이콘을 누르면 저와 대화할 수 있어요~(단 제가 온라인 일 때만)
티스토리툴바