C++ 객체지향프로그래밍 수업

[C++/Polymophism] 3. abstract class는 pure virtual function을 갖고 있는 class이다.

인생 걸고 삽질 2022. 11. 9. 02:02

9주차 수요일

이번 시간에는 pure virtual function(순수 가상함수)과 abstract class(추상 클래스)에 대해 배웠다.


pure virtual function은 함수 정의가 없는 함수이다.

  • 만드는 방법은 아래와 같다.
	virtual void print() = 0;
  • 그냥 정의이기 때문에... 그냥 알고 쓴다.

 

abstract class는 pure virtual function을 가지고 있는 class이다.

  • 이것도 그냥 정의이다. 알고 쓴다. 왜 쓰는지는 다음 시간에 설명해 준다고 하셨다.

 

abstract class는 instantiate(인스턴스화) 시킬 수 없다. 하지만 *와 &로는 이용 가능하다.

 

concrete class는 상속받은 abstract class의 pure virtual function을 override해준 class이다.

  • 다음의 코드에서, A와 B는 abstract class이고 C는 concrete class이다.
class A {
public:
	virtual void print() = 0;
};
class B :public A {
public:
	void print() {}
};
class C :public B {
public:
	void print() override { cout << "concrete"; }
};

 

pure virtual function도 정의를 해줄 수는 있다.

  • 다음과 같은 코드이다. 왜 이런 게 필요한지는 다음 시간에 설명해 준다고 하셨다.
class A {
public:
	virtual void print() = 0;
};

void A::print() { cout << "pure virtual funcition"; }

 


 


전체적으로 그냥... 알고 쓴다... 이런 게 있다... 왜 있는지는 다음 시간에... 이런 느낌이었다. 시험 끝난 바로 다음 수업이어서 수업 시간을 짧게 잡아 주신 것 같다. 코딩을 공부하면서 배운 가장 큰 깨달음은 '정의라면 받아들인다' 라는 거다. 정의의 이유를 궁금해하지 않는다. 알고 쓰라면 알고 쓴다...