C++/Class 2021. 3. 21. 23:45

순수 가상 함수 (Pure Virtual Function)

  • body가 없고 값이 0으로 설정된 virtual 함수를 의미한다.

  • body를 외부에서 정의할 수는 있는데 의미는 없다.


예제

  #include <iostream>

  class Animal
  {
  protected:
    std::string    name_;

  public:
    Animal(const std::string &name_in)
      : name_(name_in)
    {}

    std::string        getName() { return name_; }

    virtual void    speak() const = 0;  // pure virtual function
  };

  class Cat : public Animal
  {
  public:
    Cat(const std::string & name_in)
      : Animal(name_in)
    {}

    void            speak() const
    {
      std::cout << name_ << " Meow\n";
    }
  };

  class Dog : public Animal
  {
  public:
    Dog(const std::string& name_in)
      : Animal(name_in)
    {}

    void            speak() const
    {
      std::cout << name_ << " Woof\n";
    }
  };

  int            main()
  {
    using namespace std;

    Cat("nyang").speak();
    Dog("meong").speak();
  }

  /* stdout
  nyang Meow
  meong Woof
  */