목록2024/01/09 (2)
개발하는 리프터 꽃게맨입니다.
template class Iterator { public: Iterator(T* item) : _item(item) {} public: T* operator++() { return ++_item; } T* operator--() { return --_item; } T* operator+(int idx) { return _item + idx; } T* operator-(int idx) { return _item - idx; } int& operator*() { return *_item; } int& operator->() { return *_item; } bool operator==(const Iterator& other) const { return _item == other._item; } bool o..
C++ 예외 처리 C++ 에는 예외처리를 지원하긴 하지만 엄청 중요하게 다루지는 않습니다. 예외처리를 꼼꼼하게 하기는 어려울 뿐더러 예외처리는 속도가 느리기 때문이죠. 실제로 예외처리 구문에 대한 디스어셈블리를 살펴보면 코드가 엄청 많이 생성된 것을 볼 수 있습니다. C++가 속도를 중요시하는 언어인 만큼 예외 처리보다는 assert 나 if 문으로 처리하는 것이 가독성면에서나 속도면에서나 이득이라는 것이죠. 프로그래밍하면서 가장 많이 발생하는 오류는 범위 이탈(out of range)와 nullptr 참조겠죠? 이들은 모두 if 한 줄로 처리 가능합니다. 동적 할당시 메모리 부족 문제도 if 문으로 처리가 가능하구요. 그래서 대부분의 상황에서는 예외처리는 불필요할 뿐더러, 에러코드를 사용하는 방법이 더..