title: Should a C++ pure virtual class need a definition?
body: <p>Consider:</p>
  
  <pre><code>// in header.h
  class A {
  public:
      virtual ~A() = 0;
  };
  
  
  class B : public A {
  public:
      ~B() override {}
  }
  </code></pre>
  
  <p>The linker reports that it cannot resolve:</p>
  
  <blockquote>
    <p>external symbol "public: virtual __thiscall A::~A(void)" referenced in function "public: virtual __thiscall B::~B(void)"</p>
  </blockquote>
  
  <p>I find that I have to write the definition of <code>A::~A()</code>.</p>
  
  <p>I used to think that a pure virtual class defines interface (function declaration), and they don't have to contain a function definition. Should I write definitions for all virtual functions in a pure virtual base class? Or should I just need to write the destructor function?</p>