다형성

클래스 및 템플릿은 모두 인터페이스와 다형성을 지원한다. 클래스의 경우, 인터페이스는 명시적이며 함수의 시그니처를 중심으로 구성되어 있다. 다형성은 프로그래밍 실행 중에 가상 함수를 통해 나타난다. 템플릿 매개변수의 경우, 인터페이스는 암시적이며 유효 표현식에 기반을 두어 구성된다. 다형성은 컴파일 중에 템플릿 인스턴스화와 함수 오버로딩 모호성 해결을 통해 나타난다. 템플릿 프로그래밍의 암시적 인터페이스 & 컴파일 타임 다형성 객체 지향 프로그래밍에서 명시적 인터페이스와 런타임 다형성은 매우 중요하다. class Widget { public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); vo..
다형성을 가진 기본 클래스에는 반드시 가상 소멸자를 선언해야 한다. 어떤 클래스가 가상 함수를 하나라도 갖고 있으면 이 클래스의 소멸자도 가상 소멸자이어야 한다. 기본 클래스로 설계되지 않았거나 다형성을 갖도록 설계되지 않은 클래스에는 가상 소멸자를 선언하지 말아야 한다. 다형성과 가상 소멸자 다형성을 갖는 클래스를 사용하는 상황을 가정해 보자. 시간 기록을 유지하는 클래스를 제작할 것인데 기본 클래스를 만들고 용도에 따라 파생시키는 구조를 설계한 상황이다. class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); ... }; class AtomicClocK: public TimeKeeper { ... }; class WaterClocK: public TimeK..
hvv_an
'다형성' 태그의 글 목록