티스토리 뷰

technote/C++

따배씨 9-1 ~ 9-4

HTS3 2018. 10. 24. 01:00

따라배우는 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함