c++ 생각하기 1.

반응형

1. 프로퍼티 시트 활용
    블로그에 이미 자료를 올렸으니 생략.

2. 참조자와 포인터 구분 사용

    참조의 사용
    - 참조하고자 하는 어떤 객체를 미리 알고 있을 때(참조자는 NULL이 될 수 없기 떄문)
    - 다른 객체를 바꾸어 참조할 일이 없을 때(포인터의 경우 하나의 변수를 가지고 여러개의 객체를 바꾸어 참조 가능)
    - 연산자 함수 구현시(예로 첨자 연산자[] 구현시 포인터를 사용하면 어색한 모습이 된다.)

   포인터의 사용
    - 딱히 가르킬 주소가 없을때(NULL을 사용 할 수 있다)
    - 하나의 변수로 여러객체를 바꾸어 참조하더라도 이전 객체의 값이 변하지 않는다.

여태까진 대부분 포인터를 즐겨 사용했다.
포인터를 사용하면 NULL로 초기화를 할 수 있어 초기화 여부를 체크 할 수 있기 때문이다.

참조자를 사용 할 경우는 일반적으로 클래스가 하는일이 거의 없는 데이터일경우 참조자로 많이 사용했었는데
이젠 좀 더 신경써서 써야 겠다.

3, 캐스팅때 좀 더 신경써보자.
C를 먼저 배운 습관인지.. C++캐스팅을 알고 있어도 딱히 쓰지않고,
그리고 안쓰더라도 문제가 발생한적이 없었으니까 그럭저럭 넘어갔는데
요즘들어 조금 더 깔끔하고 예쁘고 가독성이 높은 코드를 만들려 하다 보니
특히, 가독성 부분에서는 억지로 라도 c++캐스팅을 쓰는게 맞는것 같다.
static_cast, const_cast, dynamic_cast, reinterpret_cret가 그것인데

static_cast는 c의 캐스트와 같은 의미와 형변환 능력을 가지고 있어 (double)나 (int)등에 자주 쓴다.
const_cast는 const를 떼어버리는데 쓰고, dynamic_cast는 상속계층 관계를 가로지르거나
하향시킨 클래스 타입으로 안전하게 캐스팅할 때 사용하면 된다.
즉, 기본클래스의 객체에 대한 포인터나 참조자의 타입을 파생클래스 혹은 형제 클래스의 타입으로 변환해 준다.
마지막으로 reinterpret_cast은 함수포인터 타입을 서로 바꾸는데 사용된다.
TAGS.

Comments