#include<iostream>
using namespace std;
//연산자 재정의 개념
//철학 : 사용자 정의 타입도 빌트인 타입처럼 동작해야한다.
// 단축 표기의 미학!!
//1. + 도 결국 함수로 표현된다. operator +
//2. p1+p2 는 operator+(p1,p2)
///////////////////////////////// Friend 로 구성한 operator+//////////////////////////////////
/*
class Point{
int x,y;
public :
Point(int a = 0, int b= 0) : x(a),y(b){}
//멤버변수가 아니더라도 private 에 접근 할수 있게 해달라.
friend Point operator+(const Point & p1, const Point &p2);
};
Point operator+(const Point &p1, const Point &p2){
return Point(p1.x +p2.x,p1.y+p2.y);
}
int main(){
Point p1(1,1);
Point p2(2,2);
Point p3= p1+p2; // operator+(p1,p2)가 있으면 된다.
//p1.operator+(p2) 라고 해석하기도 한다.
Point p4 = p1+5;
Point p5 = 5 +p1;
}
*/
///////////////////////멤버로 구성한 operator+ /////////////////////////////////
class Point{
int x,y;
public :
Point(int a = 0, int b= 0) : x(a),y(b){}
//멤버변수가 아니더라도 private 에 접근 할수 있게 해달라.
Point operator+(const Point &p){
return Point (x + p.x, y + p.y);
}
};
int main(){
Point p1(1,1);
Point p2(2,2);
Point p3= p1+p2; // operator+(p1,p2)가 있으면 된다.
//p1.operator+(p2) 라고 해석하기도 한다.
Point p4 = p1+5;
//Point p5 = 5+p1; //에러가 뜬다? why? 다음시간에 배움
}
//0. -,(),[],-> : 반드시 멤버여야 한다.
//1. 단항 : 멤버가 좋다
//2. 이항중 : += , -= , *= 등은 멤버가 좋다.
//3. 2를 제외한 이항 : 전역이 좋다.
//
//철학은 객체의 상태가 변경되면 멤버가 좋다!! ++a; a+=b; a+b;
=========================================================================================
#include<stdio.h>
//cout 의 원리
class ostream{
public :
ostream& operator<<(int n) {printf("%d",n);return *this;}
ostream& operator<<(const char *s ) {printf("%s",s);return *this;}
ostream& operator<<(ostream &(*f)(ostream &)){
f(*this);
return *this;
}
};
ostream cout;
ostream& end (ostream& os){
os<<"\n";
return os;
}
ostream& tab (ostream& os){
os<<"\t";
return os;
}
int main(){
int n =10;
cout<< n <<tab <<end; //cout.operator <<(n)
cout << "hello"; //cout.operator <<("hello")
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발강의]14-2 스마트포인터의 얕은복사 해결과 템플릿 (0) | 2012.08.14 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]14-1.스마트 포인터 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]12-1 얕은 복사의 4가지 기법 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]12. 복사생성자 (0) | 2012.08.14 |
[SSM 안드로이드 프레임워크 개발 강의]11. 함수포인터로 구현해본 안드로이드 Thread 예제제 (0) | 2012.08.13 |