#include <iostream>

class X
{
public:
  X(const std::string& name) : _name(name) { }
        std::string& name()       { return _name; }
  const std::string& name() const { return _name; }
private:
  std::string _name;
};

int main()
{
  X *p = new X("Mate");
  const X *cp = p;
  const std::string &name = cp->name();

  std::cout << name << std::endl;  // ok
  delete p;
  std::cout << name << std::endl;  // possible segmentation fault: dangling reference

  return 0;
}