홈
|
지역로그
|
태그
|
미디어로그
|
방명록
|
관리자
|
글쓰기
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
태그목록
텍스쳐
State Variable
OpenGL
Bubble Sort
updateAfterEvent
texture
플래시
XNA
프로그래밍
MovieClip
Sorting
Action Script 2.0
아이온
Selection Sort
GLUT
Insertion Sort
게임
C9
Pipeline
링크
Game Story of crown.
아래 아이콘을 누르면 저와 대화할 수 있어요~(단 제가 온라인 일 때만)
티스토리툴바