티스토리 뷰

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

의 정확한 출력을 얻을 수 있게 된다. 

반응형

'C++' 카테고리의 다른 글

c++ 메모리 누수 확인하기  (0) 2016.11.23
20160519_클래스와 객체지향(2)  (0) 2016.05.22
20160518_클래스와 객체지향(1)  (0) 2016.05.22
20160517_포인터로 별찍기  (0) 2016.05.22
20160516_콘솔 전투게임 만들기  (0) 2016.05.19
댓글