orthodox canonical form
- cpp : 기초의 Orthodox Canonical form 참고
ex00
- 코드는 그닥 어렵지 않다.
- 왜 복사생성자와 할당 연산자 오버로딩을 하는지 잘 생각해보자.
부동소수점과 고정소수점
python
# 소수 만들기 - 고정소수점
(부호) (정수부) (소수부)
21.25 => 10101.01
부호비트 : 0 [음수 : 1 / 양수 : 0]
정수부 : 10101
소수부 : 01
python
# 소수 만들기 - 부동소수점
(부호) (지수부) (가수부)
21.25 = 10101.01 (2) = 1.010101 * 2^4
부호비트 : 0 [음수 : 1 / 양수 : 0]
지수부분 : 10000011 = 127 + 4
가수부분 : 010101
ex01
<< 오버로딩은 왜 전역으로 만들어야 하는가?
- 반환값이
std::ostream인 경우, 내가 만든 클래스가 아니므로 클래스 안에 넣을 수 없음.
고정 소수점 적용
cpp
value : 소수점 값을 저장할 것.
bits : 고정소수점 값.
// int : 받아드린 number를 8만큼 비트 이동
// 정수만 있기 때문에 가능
bits = int_number << 8;
// float : 받아드린 number에 256 [= (1 << 8)]를 곱한다.
// 이 경우 소수가
bits = float_number * (1 << 8);
// 다시 float로 돌리려면
newfloat = (float)this->value / (1 << this->bits);
// 다시 int로 돌리려면
newint = (this->value) >> (this->bits);
ex02
python
static 정적 멤버 함수:
- private한 static 멤버변수에 접근하는 용도
- 객체를 생성하지 않고도, 클래스 이름만으로도 호출. (★)
- 비교하는 일이 빈번해서 만든 것?
python
후위 연산자 오버로딩할 때 const 붙이기
- (a++)++ 라는 연산이 존재하면, 이를 계산할 것인가?
- a가 int 계열이면, 정의되지 않음.
- 따라서 해당 부분은 정의하지 않게 막았음.
ex03
python
선분 위에 있어도 triangle 안에 있다고 판단해야 함.