기본 클래스 개체에 대한 파생 클래스 포인터는 파생 클래스의 메서드를 어떻게 호출 할 수 있습니까?

Siddheshwaar Patil
class BaseClass{

public:
    int a;
    char buf[250];

    void abcd(){
        cout<<"hello base from abcd";
    }

    virtual void defg(){
        cout<<"hellow base from defg";
    }
};

class DerivedClass: public BaseClass{

public :
    int b;
    char bufb[255];

    void bcde(){
        cout<<"hello base from bcde";
    }

    virtual void defg(){
        cout<<"hellow base from defg";
    }
};

int main(){

    BaseClass* bas=new BaseClass();
    DerivedClass* der;

    der=static_cast<DerivedClass*>(bas);
    cout<<"address of der ="<<der <<"   base= "<<bas<<endl;
    der->bcde();
    cout<<endl<<"Base size:"<< sizeof(*bas)<<"  Derived size:"<<sizeof(*der)<<endl;

    getch();
    return 0;
}

기본 클래스 개체에 대한 파생 클래스 포인터는 어떻게 파생 클래스의 메서드를 호출 할 수 있습니까? 왜 그리고 어떻게? 메모리에서 생성 된 기본 클래스 개체는 기본 클래스 크기에 불과하므로 파생 클래스 메서드를 어떻게 포함 할 수 있습니까? 성공적으로 호출되었습니다.

출력 : ==>

der의 주소 = 002585A8 base = 002585A8

bcde의 hello base

기본 크기 : 260 파생 크기 : 520

DrC

컴파일러는 순수하게 형식 정보를 기반으로 비가 상 메서드 bcde를 바인딩했습니다. 메서드가 객체 내용을 참조하지 않기 때문에 메모리 레이아웃이 작동하지 않았습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관