Overloading : 연산자들을 직접 정의 하는것
(리턴 타입) operator(연산자) (연산자가 받는 인자)
조심)
Complex& operator+(const Complex& c) {
real += c.real;
img += c.img;
return *this;
}
>
Complex a = b + c + b;
(b.plus(c)).plus(b)
> 1. b.plus(c) == b+c 가 b의 값으로 들어감 (reference)
> 2. (b+c)+(b+c) 가 되어 다른 값이 나옴
friend 키워드
// B 는 A 의 친구!
friend class B;
// func 은 A 의 친구!
friend void func();
클래스 B와 func() 함수는 class A의 모든 변수와함수 접근가능
짝사랑..
이항연산자 정의
: 자기자신을 리턴 > 멤버함수
그외 > 외부함수
<< 연산자
std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << "( " << c.real << " , " << c.img << " ) ";
return os;
}
<< a << 라고하면
// std::ostream& os: 출력 스트림 객체 (std::cout 등).
> " ( real문자열 , img문자열) " 형태로 출력 하게 해줌
타입변환 연산자
operator (변환 하고자 하는 타입) ()
후위,전위 증감자
Test operator++(int) {
Test temp(*this); // 현재 객체의 복사본 생성
x++; // 현재 객체의 값 증가
std::cout << "후위 증감 연산자" << std::endl;
return temp; // 증가 전 상태의 복사본 반환
}
temp : 자기자신 복사본
> return 을 temp로 함
>> x++ 한게 반영되지는 않음
//5.3 C++ 스타일의 캐스팅
(원하는 캐스팅 종류)<바꾸려는 타입>(무엇을 바꿀 것인가?)
// 5.3 나머지는 복습때 학습하기