티스토리 뷰
따라배우는 C++ (홍정모)
https://www.youtube.com/watch?v=KJGxrd2Ac24&list=PLNfg4W25Tapw5Yx4yuExHNybBIUk68aNz
<10/23>
1. 9-1 산술연산자 오버로딩(overloading) 하기
- const를 뒤에 붙이면 같은 이름도 오버로딩 된다는 것을 까먹어서 조금 헤멤
- 핵신기,, c++로 파이썬 만들수도 있을듯
Cents operator + (const Cents &c1, const Cents &c2)
{
return Cents(c1.getCents() + c2.getCents());
}
cout << (cents1 + cents2).getCents() << endl;
cout << (cents1 + cents2 + Cents(10)).getCents() << endl; 처럼 연쇄사용도 가능!
- 삼항연산자(?:) // sizeof // :: // . // .* 오버로딩 불가.
- 연산자 오버로딩 하더라도 우선순위는 변경불가
- ^연산자 오버로딩 주의(최후순위 연산자이기 때문)
- member function으로 구현한 경우
Cents operator + (const Cents &c)
{
return Cents(this->m_cents + c.m_cents);
}
- 멤버로만 오버로딩 해야하는 연산자 : =, [], (), ->
2. 9-2 입출력 연산자 오버로딩 하기
friend ostream& operator << (ostream &out, const Point &point)
{
out << "( " << point.m_x << " " << point.m_y << " " << point.m_z << " )";
return out;
}
friend istream& operator >> (istream &in, Point &point)
{
in >> point.m_x >> point.m_y >> point.m_z;
return in;
}
- 멤버형 오버로딩이 불가능하다. 체이닝을 하려면 cout << A 이런식으로 해야하는데
cout 은 ostream형 오브젝트이기 때문에 ostream을 반환해야 한다.
- 파일 스트림에도 같이 쓸수 있다.
- 1-4강 듣기(완료)
3. 9-3 단항 연산자 오버로딩 하기
Cents operator -() const
{
return Cents(-m_cents);
}
- 단항 연산자 : - , + , !
4. 9-4 비교 연산자 오버로딩 하기
- ==, !=, >, >=
- algorithm 라이브러리에서 random_shuffle(begin(arr), end(arr)) 사용
- sort가 안되는 이유는 비교연산자 오버로딩이 안됐기 때문이다.
- > 연산자 말고 < 연산자를 오버로딩 해야함 (인터레스팅..)
'technote > C++' 카테고리의 다른 글
따배씨 9-9~ 9-12 (0) | 2018.10.26 |
---|---|
따배씨 9-5 ~ 9-8 (0) | 2018.10.24 |
따배씨 8-12 ~ 8-15 (0) | 2018.10.23 |
따배씨 8-8 ~ 8-11 (0) | 2018.10.21 |
정적라이브러리 공유라이브러리 (0) | 2018.10.17 |