C++
20160523_다형성, virtual
cho22
2016. 5. 24. 23:56
반응형
클래스를 상속하면 상속하는 클래스는 부모클래스, 상속받는 클래스는 자식 클래스가 된다.
다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다.
다형성의 예를 살펴보자.
클래스 AA, 클래스AA를 상속받은 클래스BB, 클래스AA를 상속받은 클래스CC 세개의 클래스가 있다.
각각의 output은 cout << "클래스이름" << endl; 로 이루어진 클래스 이름을 출력하는 함수이다.
class AA
class AA
{
public:
AA();
~AA();
void output();
}
class BB
class BB : public AA
{
public:
AA();
~AA();
void output();
}
class CC
class CC : public AA
{
public:
AA();
~AA();
void output();
}
이제 메인함수에서 다형성을 구현해보자. (다형성은 동적할당을 이용한다.)
AA* pA = new AA;
pA -> output(); // 동적할당받은 객체의 함수는 -> 연산자를 이용해 사용한다.
AA* pB = new BB;
pB -> output();
AA* pC = new CC;
pC -> output();
이 상태로 출력을 하게 되면 모두 A의 output이 나오게 된다.
이럴때 사용하는것이 virtual 함수이다.
AA의 output 앞에 virtual 을 붙여주고 실행하게 되면
AA
BB
CC
의 정확한 출력을 얻을 수 있게 된다.
반응형