순수가상함수(pure abstract function)은 function inplementation이 없는 virtual function으로
c++에서는 함수선언부에 = 0을 붙여서 만든다.


순수가상함수를 하나라도 가진 class를 abstract class라 부른다.
추상 클래스(abstract class)는 객체 생성이 불가능하다.
추상 클래스의 순수가상함수를 call할 방법이 없기 때문이다.

순수가상함수는 override를 통해 implementation해줘야 한다.
추상 클래스의 특성이 프로그래밍에 도움이 되는 경우가 있는데
게임에서 쓰이는 몬스터 객체를 만든다고 하면

각 몬스터의 디테일한 부분을 개발하는 개발자가 Monster 클래스를 상속받아 Rat, Rabbit의 공격특성을 개발하여
게임 전체의 아키텍처를 만드는 사람은 바탕이 되는 클래스만 만들어 더 효율적으로 분업할 수 있다.
바탕 클래스는 순수가상함수를 이용해 인터페이스만 만들면되므로 interface class라고 부른다.
인터페이스 클래스는 내부에 implementation은 써주지않고 멤버변수도 정의하지 않는게 더 유연한 개발의 팁이다.
class Animal
{
public:
virtual void speak()=0;
virtual void walk()
{
/////////
};
private:
int legCount;
int noseLocation;
int mouthLocation;
};
class Dolphin: public Animal
{
void walk() override
{
"we swim";
}
}
class Cat : public Animal
{
void speak() override
{
std::cout << "meow" << std::endl;
}
Cat()
{
legCount = 4;
noseLocation = center(face);
}
}
int main()
{
Cat kitty;
return 0;
}