반응형

dynamic_cast 7

[C++ 무료 동영상 강의] 38. C++에서의 형 변환

[C++ 무료 동영상 강의] 38. C++에서의 형 변환 다루는 내용강제 형변환의 위험성,dynamic_cast,static_cast,const_cast,reinterpret_cast, 실수를 메모리에 저장하는 원리 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C++] 38. C++에서의 형 변환

[C++ 무료 동영상 강의] 37. 하향 캐스팅

[C++ 무료 동영상 강의] 37. 하향 캐스팅 다루는 내용하향 캐스팅,상향 캐스팅,dynamic_cast, 명시적 형변환의 문제점 앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다. 본문[디딤돌 C++] 37. 하향 캐스팅

[C++] 84. 최종 실습 - 파티

[C++] 84. 최종 실습 - 파티 이번에는 파티 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 파티 기능은 다운타운에 있는 모든 학생의 Drink을 수행합니다. 그런데 각 장소에서는 해당 장소에서 명령할 수 있는 기능만 보이게 한정하였기 때문에 IPlay 인터페이스 형식으로 학생 개체에 접근해야 합니다.그리고 IPlay 인터페이스에 Drink 메서드를 순수 가상 메서드로 약속하세요. interface IPlay { virtual void Drink()=0; }; 다운타운의 Party 기능을 구현합시다. void Downtown::Party()//파티 { cout

[C++] 82. 최종 실습 - 소등

[C++] 82. 최종 실습 - 소등 이번에는 소등 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 소등 기능은 주거지에 있는 모든 학생의 Sleep을 수행하게 합니다. 그런데 각 장소에서는 해당 장소에서 명령할 수 있는 기능만 보이게 한정하였기 때문에 IRelax 인터페이스 형식으로 학생 개체에 접근해야 합니다.그리고 IRelax 인터페이스에 Sleep 메서드를 순수 가상 메서드로 약속하세요. interface IStudy { virtual void Sleep()=0; }; 주거지의 TurnOff 기능을 구현합시다. void Village::TurnOff()//소등 { cout

[C++] 37. 하향 캐스팅(dynamic_cast)

이번에는 기반 형식 포인터 변수로 참조하고 있는 형식을 프로그램 동작 시에 파생 형식으로 형 변환하는 하향 캐스팅을 알아보기로 해요. 다형성은 캡슐화와 상속을 보다 효과적이고 현실 세계에 근접하게 표현할 수 있게 해주는 특징입니다. 하지만 기반 클래스 형식 포인터 변수로 파생 개체를 관리하는 것은 치명적인 단점이 있습니다. 만약 기반 클래스 형식에서는 약속할 필요가 없는 메서드가 파생 클래스 형식에 있을 때 해당 메서드의 접근 수준을 public으로 제공해도 접근하지 못합니다. 이러한 약점을 보완하기 위해 많은 OOP언어에서는 런 타임에 파생 개체 형식으로 형 변환(캐스팅)하는 방법을 제공하고 있으며 이를 하향 캐스팅이라 합니다. C++언어에서는 dynamic_cast를 통해 하향 캐스팅을 제공하고 있습..

[C++] 31. 다형성 개요

이번에는 OOP의 주요 특징 세 가지인 캡슐화, 상속, 다형성 중에 다형성에 관해 살펴봅시다. 다형성은 기반 형식의 멤버를 파생 형식에서 상속받는 장점을 활용할 수 있는 OOP 특징입니다. 하나의 기반 형식에서 파생한 다양한 파생 클래스가 있을 때 같은 형식의 변수로 접근할 수 있으면 프로그래밍을 효과적으로 할 수 있겠죠. C++언어에서는 기반 형식의 포인터 변수로 파생 형식의 개체를 설정할 수 있습니다. 그리고 기반 형식의 참조 변수로 파생 형식의 개체를 설정할 수도 있습니다. class Musician { }; class Pianist:public Musician { }; int main() { Musician *musician = new Pianist(); //기반 형식 포인터 변수에 파생 형식 개..

[C++] 하향 캐스팅

6.3 하향 캐스팅 다형성은 캡슐화와 상속을 보다 효과적이고 현실 세계에 근접하게 표현할 수 있게 해주는 매력적인 특징입니다. 하지만 기반 클래스 형식 포인터 변수로 파생된 개체를 관리하는 것은 치명적인 단점을 가져오게 합니다. 만약, 기반 클래스 형식에서는 약속할 필요가 없는 메서드가 파생 클래스 형식에 있을 경우 해당 메서드의 접근 수준을 public으로 제공하여도 접근하지 못하게 됩니다. 이러한 약점을 보완하기 위해 많은 OOP언어에서는 런 타임에 파생 개체 형식으로 캐스팅하는 방법을 제공하고 있으며 이를 하향 캐스팅이라 합니다. C++언어에서는 dynamic_cast를 통해 하향 캐스팅을 제공하고 있습니다. dynamic_cast를 사용하면 관리되는 실 개체의 형식이 캐스팅이 가능하지 않다면 0을..

반응형