파생 클래스가 기본 기능을 호출하도록 강제
-
19-09-2019 - |
문제
다른 클래스에서 클래스를 도출하고 함수를 덮어 쓰면 전화를 통해 기본 함수를 호출 할 수 있습니다. Base::myFunction()
구현 내부 myFunc
파생 수업에서.
그러나 내에서 정의 할 수있는 방법이 있습니까? Base
기본 함수가 어떤 경우에도 호출되며, 이어 쓰기 된 함수에서 명시 적으로 호출하지 않고? (실행 된 파생 기능 전후)
또는 더 나은, 가상에 가상 기능이 있다면 Base
클래스와 두 개의 구현 된 개인 기능 before()
그리고 after()
, Base
이것의 파생 된 클래스에서 기능 전후의 클래스 Base
클래스는 호출됩니다. before()
그리고 after()
호출 될까요?
감사!
해결책
아니요, 이것은 불가능합니다.
그러나 다른 가상 기능을 호출하여 다음과 같은 시뮬레이션 할 수 있습니다.
class Base
{
public:
void myFunc()
{
before();
doMyFunc();
after();
}
virtual void doMyFunc() = 0;
};
다른 팁
파생 클래스가베이스의 메소드를 과부하/재정의하는 것을 방지하려고합니다. 방법을 '재정의 할 수 없음'으로 표시함으로써 (언어에 따라 다름) 마킹하여 장려 할 수 있지만 항상 주변에는 방법이 있습니다.
다시 말해, 누군가에게 특정 방식으로 수업을 사용하도록 강요 할 수는 없으며 사용해야하는 방식 만 알려줍니다.
C ++에 대답하면 원하는 방식으로 "보이지 않게"상속 된 기능을 가질 수 없습니다.
상속 클래스를 통해 호출되는 유일한 방법은 생성자와 소멸자입니다.
제휴하지 않습니다 StackOverflow