문제

다른 클래스에서 클래스를 도출하고 함수를 덮어 쓰면 전화를 통해 기본 함수를 호출 할 수 있습니다. Base::myFunction() 구현 내부 myFunc 파생 수업에서.

그러나 내에서 정의 할 수있는 방법이 있습니까? Base 기본 함수가 어떤 경우에도 호출되며, 이어 쓰기 된 함수에서 명시 적으로 호출하지 않고? (실행 된 파생 기능 전후)

또는 더 나은, 가상에 가상 기능이 있다면 Base 클래스와 두 개의 구현 된 개인 기능 before() 그리고 after(), Base 이것의 파생 된 클래스에서 기능 전후의 클래스 Base 클래스는 호출됩니다. before() 그리고 after() 호출 될까요?

감사!

도움이 되었습니까?

해결책

아니요, 이것은 불가능합니다.
그러나 다른 가상 기능을 호출하여 다음과 같은 시뮬레이션 할 수 있습니다.

class Base
{
public:
  void myFunc()
  {
    before();
    doMyFunc();
    after();
  }

  virtual void doMyFunc() = 0;
};

다른 팁

파생 클래스가베이스의 메소드를 과부하/재정의하는 것을 방지하려고합니다. 방법을 '재정의 할 수 없음'으로 표시함으로써 (언어에 따라 다름) 마킹하여 장려 할 수 있지만 항상 주변에는 방법이 있습니다.

다시 말해, 누군가에게 특정 방식으로 수업을 사용하도록 강요 할 수는 없으며 사용해야하는 방식 만 알려줍니다.

C ++에 대답하면 원하는 방식으로 "보이지 않게"상속 된 기능을 가질 수 없습니다.

상속 클래스를 통해 호출되는 유일한 방법은 생성자와 소멸자입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top