C++에서 멤버 함수 재 작성 여 부 를 판단 합 니 다.

C++에서 멤버 함수 재 작성 여 부 를 판단 합 니 다.
한 구성원 함수 가 허 함수 인지 아 닌 지 를 판단 하 는 데 두 가지 조건 이 있 습 니 다.
4.567917.두 구성원 함 수 는 각각 기본 클래스 와 파생 류 에서 정의 한다4.567917.기본 클래스 에서 정 의 된 구성원 함 수 는 반드시 키워드 virtual 을 가 져 야 하고 파생 류 의 구성원 함 수 는 가 져 갈 수 있 습 니 다이 두 구성원 함수 원형(함수 명,함수 매개 변수,함수 반환 유형)은 반드시 같 아야 한다.
주의:이 두 함수 의 반환 유형 이 각각 기본 클래스 와 파생 클래스 라면 반환 값 은 기본 클래스 와 파생 클래스 를 가리 키 는 지침 이나 참조 일 경우 재 작성 도 구성 합 니 다.이 반환 형식 을 협 변 이 라 고 합 니 다.
이 구성원 함 수 를 호출 할 때 대상 지침 을 사용 하면 지침 이 서로 다른 대상 을 가리 킬 때 서로 다른 구성원 함 수 를 호출 할 수 있 습 니 다.
다음은 프로그램 분석 을 드 리 겠 습 니 다.

#include<iostream>
using namespace std;

class Grandam
{
public:
  virtual void introduce_self()
  {
    cout << "I am grandam." << endl;
  }
};

class Mother:public Grandam
{
public:
  void introdude_self()
  {
    cout << "I am mother." << endl;
  }
};

class Daughter :public Mother
{
public:
  void introduce_self()
  {
    cout << "I am daughter." << endl;
  }
};

int main()
{
  Grandam* ptr;
  Grandam g;
  Mother m;
  Daughter d;
  ptr = &g;
  ptr->introduce_self();

  ptr = &m;
  ptr->introduce_self();

  ptr = &d;
  ptr->introduce_self();
  return 0;
}

결 과 는 그림 과 같다.

결 과 를 통 해 알 수 있 듯 이 매번 구성원 함수 의 허 함수 introduce 를 실 행 했 습 니 다.self()버 전 으로 계 승 된 이의 성 문 제 를 해결 했다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기