title: c++ when to return a const char* instead of a std:string
body: <p>In the class below is there any benefit or reason why <code>speak()</code> returns a <code>const char*</code> instead of a <code>std::string</code>?</p>
  
  <pre><code>class Animal
  {
  protected:
      std::string m_name;
  
      Animal(std::string name)
      : m_name(name)
      {
      }
  
  public:
      std::string getName() { return m_name; }
      const char* speak() { return "???"; }
  };
  </code></pre>