#220819~
operator라는 키워드를 사용하며, 그 형식은 다음과 같음
단항 연산자에는 ++, --, - 부호가 있다. (전치, 후치)
피연산자가 하나이다.
단항연산자를 중첩할 때는 매개변수가 필요없다. (항상 좌우의 변수 객체가 피연산자이므로)
전치 연산자란 변수명 앞에 연산자가 오는것을 말한다 (++x, --i 등)
전치 연산자는 연산이 먼저 일어나고 대입이 된다.
int x=10;
std:: cout << ++x
전치 단항 연산자 중첩의 형식
리턴형 operator 연산자명(); -> 매개변수 없음
void operator ++(int) // 후치인 경우 int를 꼭 적기
{
// 전치인지 후치인지
++i; or i++;
}
class Point{
int x;
int y;
public:
Point(int i, int j){x=i; y=j;}
int getX() {return x;}
int getY() {return y;}
void upPrint(){
++x; ++y;
std::cout << x << " " << y << std::endl;
}
// return 값을 point형, 클래스형을 리턴한다 (Point up()함수)
// Point형이라는 것은 그 class의 멤버변수를 다 return한다
Point up(){
++x; ++y;
// this는 객체의 주소, * 찍으면 그 값
return *this;
}
};
int main()
{
Point p1(3,4);
p1.upPrint();
p1.up();
std::cout << p1.getX() << ",";
std::cout << p1.getY();
return 0;
}
4,5
5,6
[ver.2]
class Point{
int x;
int y;
public:
Point(int i, int j){x=i; y=j;}
int getX() {return x;}
int getY() {return y;}
// 원래 전치 ++연산자는 수를 1증가시키는 연산자임지만
// point클래스형 객체에는 멤버변수 x,y를 각각 1씩 증가시키는 연산자로 재정의
Point operator++(){ //이 부분을 함수의 이름으로 생각!
++x;
++y;
return *this;
// 객체를 반환한다, x,y 모두리턴
}
};
int main()
{
Point p1(2,3);
++p1;
std::cout << p1.getX() << ",";
std::cout << p1.getY();
return 0;
}
void operator+(int x) // 이 부분을 함수 이름
{
:
}
연산자를 직접 만들 수있다. (+, - 도)
temp 객체를 만들고 대입하는 것이 안전하다!
연산자 == 사용