베이스 클래스 파생 클래스

748 단어 Class
1. 만약에'기류의 바늘'로'파생류의 대상'을 가리킨다면 이 바늘을 통해 이 기류가 정의한 함수 2만 호출할 수 있다. 만약에'파생류의 바늘'로'기류의 대상'을 가리킨다면 먼저 뚜렷한 변형 조작(explicit cast)을 해야 한다. 이런 방법은 매우 위험하다.
3. 만약에 기본 클래스와 파생 클래스가 모두'동일한 명칭의 함수'를 정의했다면 대상 포인터를 통해 구성원 함수를 호출했을 때 그 함수를 호출했는지 그 포인터의 원시 유형에 따라 정해야 한다. 포인터가 실제 가리키는 대상의 유형에 따라 정해야 한다. 이것은 첫 번째 의미와 상통한다.
class A
{
public:
	virtual void f1()
	{
		cout<<1;
	}
	void f2()
	{
		cout<<2;
	}
};
class B:public A
{
public:
	int i;
	void f1()
	{
		cout<<3;
	}
	void f2()
	{
		cout<<4;
	}
};
int main()
{
	B* pB;
	A a;
	pB=(B*)&a;
	pB->f1 ();// , 
	pB->f2();// , 
	//pB->i = 5;

	return 0;
}

1 4

좋은 웹페이지 즐겨찾기