본문 바로가기

프로그램언어/More Effective C++

항목 4 : 쓸데 없는 기본 생성자는 그냥 두지 말자 문제제기 : 기본 생성자는 객체가 생성되고 위치의 주변 정보를 전혀 갖지 않고도 객체를 초기화 할 수 있습니다. 자세한 내용 : 외부입력이 없이는 기본 생성자를 가져야 한다. 하지만 세상만사세옹지마라 했던가 그렇지 않은 경우도 있기에 주의깊게 생각한 후 사용을 해야 될 부분들이 종종 생기곤 합니다. class EquipmentPiece { public: EquipmentPiece( int IDNumber ); ... }; 이 클래스를 썼을 때 문제가 일어날 수 있는 경우가 세가지가 있습니다. 1. 배열을 생성할 때 ( i, 객체에 배열을 생성하기란 불가능 ) 1 ) 배열을 풀어서 매개변수에 일일이 대입 ( 현실성이 떨어진다. ) 2 ) 배열 대신에 포인터 배열을 사용 2. 메모리 사용량이 증가 더보기
항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. 상속성은 기본 베이스 클래스에서 객체의 포인터 참조자를 통해 파생 클래스 조작을 할 수 있다는 점을 가지고 있습니다. 이러한 참조자 포인터를 가지고 상속성을 가지고 다형성을 가지고 있다고 합니다. 배열의 경우에는 배열 또한 다형성과 같은 조작이 가능은 합니다. 하지만 배열은 연속된 메모리상의 주소를 가르키기 때문에 지정된 범위내에서 상수 시간으로 접근이 가능합니다. 더보기
항목2 : 가능한 C++ 스타일의 캐스트를 즐겨 쓰자. 문제제기: goto, cast에 의한 사태 악화을 개선하기 위한 문제 제기. 착안점 : ㅇ C 스타일의 캐스트 문제점 1) 어떤 타입을 다른 타입으로 아무 생각없이 바꾸어주는 괴물적 존재 2) 눈으로 찾아내기 힘들다. grep과 같은 도구를 쓰더라도 구분하기 힘들다. ㅇ C++ 의 네 가지 연산자 1) static_cast / const_cast / dynamic_cast / reinterpret_cast 해결점 : C++에 정의된 cast 타입을 사용하자. ㅇ static_cast ㅇ const_cast ㅇ dynamic_cast ㅇ reinterpret_cast 자세한 내용 ㅇ http://tingcobell.tistory.com/19 ㅇ C++ Language Tutorial : Type Casti.. 더보기