분류 전체보기 검색 결과
이번 항목은 RTTI 란 무엇인지에 대해서 살펴 본다. RTTI는 무엇인가? C++ 프로그래밍에선 Run-Time Type Information, or Run-Time Type Identification 약자로 "런타임 형식 정보" 기능을 뜻한다. RTTI 기능을 사용하기 위해선 컴파일러가 이 기능을 지원해야 하며, 비쥬얼 스트디오에선 프로젝트 속성이 "런타임 형식 정보 사용" 을 체크 해야만 한다. 이것은 클래스 및 함수, 기본자료 등 객체라 불리우는 모든 것에 컴파일러가 "아이디"를 부여하여, 기능이 구현되어졌다. 이 "아이디"는 type_info 객체로 구현 되어 졌으며, typeid 연산자를 통해서만, 생성 가능하다. 어떻게 typeid 를 사용 할수 있는가? 예제 코드 /* http://ikpi..
이번 항목은 객체지향 기술은 무엇이 있고, 어떻게 사용되어야 하는가? 에 대한 것이다. 두 가지 종류의 통신 세션을 가진 네트워킹 어플리케이션이 있고, 각 세션은 자신의 메세지 프로토콜을 가지며, 각 세션은 스스로가 전송을 담당한다고 보자. 그래서 코드를 짜면 아래와 같을 것 이다. /* Base 클래스 */ class BasicProtocol { public: BasicProtocol( ); virtual ~BasicProtocol( ); bool BasicMsgA( /* ... */ ); bool BasicMsgB( /* ... */ ); bool BasicMsgC( /* ... */ ); }; /* Derived 클래스 */ class protocol1 : public BasicProtocol { ..
이번 항목은 가상함수를 사용시, 주의해야 할 점을 설명하고 있다. 다음 코드를 보자. #include #include using namespace std; /*Base 클래스의 정의 구역*/ class Base { public: virtual void f( int ); virtual void f( double ); virtual void g( int i = 10 ); }; void Base::f( int ) { cout
이번 항목은 보다 전문가적 스타일에 중점을 두었으며, 이 원리를 이해 한다면, 더 유지보수가 편하고 견고한 클래스 디자인에 도움이 될 것이다. 다음 코드를 보자. // 예제코드 class Complex { public: Complex( double real, double imaginary = 0 ) : _real( real ), _imaginary( imaginary ) { } void operator+ ( Complex other ) { _real = _real + other._real; _imaginary = _real + other._imaginary; } void operator
Pimpl 의 주요 단점은 항당 new 를 이용하여, 생성하고 delete를 이용하여 해제하는 과정을 겪어야 한다는 점이다. 보다 안전하고 보다 빠르게 사용 할수 있을까? ... 아래 3가지 시도를 우선 보도록 하자. /* 시도 1 */ // file y.h #include "x.h" class Y { /* ... */ X x_; }; // file y.cpp Y::Y() { } 역시 이 시도1로 하면 Pimpl의 비용을 전혀 내지 않지만, Pimpl 은 쓰지 않으니 .. 한번 사용해 보도록 하자. /* 시도 2 */ // file y.h class X; class Y { /* ... */ X* px_; }; // file y.cpp #include "x.h" Y::Y() : px_( new X ) { ..
최근댓글