const를 쓰는 이유는?
- 멤버 변수의 값이 바뀌는 것을 방지하기 위해서
- 최대한 많은 곳에 const를 붙일 것
- 지역 변수에 까지도 붙일 것
- 모든 회사가 이 코딩 표준을 따르지는 않는다.
Vectro operater + (const Vector& rhs) const;
const &를 사용하는 이유는?
- 불필요한 개체의 사본이 생기는 것을 방지하기 위해서이다.
- 멤버 변수가 바뀌는 것 역시 방지하기 위해서이다.
어디에 const를 넣고 안넣고는 곰곰히 생각하면
어디에 const를 넣어야 할 지 알 수 있다.
생각보다 연산자 오버로딩에서 const는 생각보다 잘못쓸 가능성이 있다.
왜냐하면 연산자 오버로딩을 짤 일이 별로 없기 때문이다.
잘못 사용하는 코드는 다음 예시와 같다.
// 잘못된 코드의 예시
std::ostream& operator << (const std::ostream& os, const Vector& rhs);
그렇다면 const를 사용하지 않을 때는,
값이 변해야 할 때 즉, 오브젝트의 상태가 변한다거나 할 때이다.
그럼 연산자 오버로딩에 const를 사용하지 않는 경우는?
operator -, operator + 등 과 같이 값이 변하는 것이다.
// 반환 값 함수 이름 인자
vector1 = vector1.operator += (vector2)
그럼 이런 함수는 다음과 같이 생긴다면 체이닝하기 더 쉬울 것이다.
Vector& operator +=(const Vector& rhs)
위와 같은 함수는 다음과 같은 장점이 있다.
- 개체 복사가 없다.
- 연산자 여럿을 연결해서 쓸 수 있다.
// 연산자 여럿을 연결해서 쓰는 예시
vector1 += vector2 += vector3
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
OOP - 상속 (0) | 2024.11.11 |
---|---|
연산자 오버로딩을 남용하는 것 (1) | 2024.11.10 |
C++ 함수 오버로딩과 C언어의 _Generic (4) | 2024.11.03 |
복사 생성자 (4) | 2024.11.02 |
구조체와 클래스의 차이 (1) | 2024.11.02 |