title: The constructor function in a pure virtual class should be "protected" or "public"?
body: <p>The following example is from the book <em>&quot;Inside C++ object model&quot;</em></p>
  <pre><code>class Abstract_base {
  public:
      virtual ~Abstract_base () = 0;
      virtual void interface () const = 0;
      virtual const char* mumble () const 
      {
          return _mumble;
      }
  protected:
      char *_mumble;
  };
  </code></pre>
  <p>The author says if I want to initialize <code>_mumble</code>, the data member of the pure virtual base class, a <strong>&quot;protected constructor&quot;</strong> should be implemented.</p>
  <p>But why <strong>protected</strong>? And why <strong>&quot;public constructor&quot;</strong> is not suitable for this class?</p>
  <p>Thanks for your answers, and it would be perfect if there's an example.</p>