상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
원나라의 상업적 경로는 어떻게 형성되었나요?
USB 장치의 포맷 방법은 무엇인가요?
세이셸에서의 자전거 타기 경험은 어떤가요?
OECD의 'Sustainable Cities' 관련 보고서는 어떤 주제를 다루나요?
OECD의 'Global Health' 정책은 어떤 방향으로 진행되고 있나요?
OECD의 'Economic Recovery' 정책은 어떤 내용을 포함하나요?
UH-60 블랙 호크의 조종 시스템은 어떻게 구성되어 있나요?
위나라의 역사적 사건 중 가장 중요한 것은 무엇인가요?
위나라의 주요 종교적 행사에는 무엇이 있었나요?
위나라의 주요 외교적 갈등은 어떤 것이 있었나요?
위나라의 주요 경제적 위기는 어떻게 극복되었나요?
위나라의 주요 사회적 갈등의 원인은 무엇인가요?
Previous
Next
수정하기 - C++에서 pure virtual function과 abstract class의 개념은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C++에서 pure virtual function 과 <a href='https://sangseek.com/sangseeks/abstract/ko'>abstract</a> class 는 객체 지향 프로그래밍의 중요한 개념으로, 다형성과 인터페이스 설계를 지원하는 데 사용됩니다. 이 두 개념은 서로 밀접하게 관련되어 있으며, 클래스 설계에서 중요한 역할을 합니다. Pure Virtual Function Pure virtual function 은 클래스에서 선언되지만, 구현이 제공되지 않는 <a href='https://sangseek.com/sangseeks/가상 함수/ko'>가상 함수</a>입니다. 이러한 함수는 클래스가 인터페이스 역할을 하도록 강제하며, 해당 클래스를 상속받는 모든 파생 클래스에서 반드시 이 함수를 구현해야 합니다. Pure virtual function은 다음과 같은 형식으로 선언됩니다: ```cpp class Base { public: virtual void pureVirtualFunction() = 0; // Pure virtual function }; ``` 여기서 `= 0`은 이 함수가 pure virtual function임을 나타냅니다. 이와 같은 함수는 기본 클래스에서 구현되지 않으며, 파생 클래스에서 반드시 구현해야 합니다. 만약 파생 클래스가 이 함수를 구현하지 않으면, 그 파생 클래스 또한 pure virtual function을 포함하게 되어 추상 클래스가 됩니다. Abstract Class Abstract class 는 하나 이상의 pure virtual function을 포함하는 클래스입니다. 이러한 클래스는 <a href='https://sangseek.com/sangseeks/인스턴스/ko'>인스턴스</a>를 생성할 수 없으며, 주로 인터페이스를 정의하는 데 사용됩니다. Abstract class는 다음과 같이 정의됩니다: ```cpp class AbstractClass { public: virtual void pureVirtualFunction() = 0; // Pure virtual function }; ``` 이 클래스는 인스턴스를 생성할 수 없지만, 다른 클래스가 이 클래스를 상속받아 구현할 수 있습니다. Abstract class는 다형성을 제공하며, 다양한 파생 클래스에서 공통된 인터페이스를 정의하는 데 유용합니다. 사용 예시 다음은 pure virtual function과 abstract class의 사용 예시입니다: ```cpp include <iostream> // Abstract class class Shape { public: virtual void draw() = 0; // Pure virtual function }; class Circle : public Shape { public: void draw() override { std::cout << "Drawing a Circle" << std::endl; } }; class Square : public Shape { public: void draw() override { std::cout << "Drawing a Square" << std::endl; } }; void renderShape(Shape* shape) { shape->draw(); // 다형성을 이용한 호출 } int main() { Circle circle; Square square; renderShape(&circle); // "Drawing a Circle" renderShape(&square); // "Drawing a Square" return 0; } ``` 위의 예제에서 `Shape` 클래스는 추상 클래스이며, `draw`라는 pure virtual function을 포함하고 있습니다. `Circle`과 `Square` 클래스는 `Shape` 클래스를 상속받아 `draw` 함수를 구현합니다. `renderShape` 함수는 `Shape` 포인터를 매개변수로 받아 다형성을 이용하여 다양한 <a href='https://sangseek.com/sangseeks/도형/ko'>도형</a>을 그릴 수 있습니다. 요약 - Pure Virtual Function : 구현이 없는 가상 함수로, 파생 클래스에서 반드시 구현해야 함. - Abstract Class : 하나 이상의 pure virtual function을 포함하는 클래스. 인스턴스를 생성할 수 없으며, 인터페이스를 정의하는 데 사용됨. 이러한 개념들은 C++에서 객체 지향 프로그래밍의 강력한 기능을 제공하며, 코드의 재사용성과 유지보수성을 높이는 데 기여합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기