<p>Whilst refactoring some code I came across some getter methods that returns a std::string.  Something like this for example:</p>

<pre><code>class foo
{
private:
    std::string name_;
public:
    std::string name()
    {
        return name_;
    }
};
</code></pre>

<p>Surely the getter would be better returning a <code>const std::string&amp;</code>?  The current method is returning a copy which isn't as efficient.  Would returning a const reference instead cause any problems?</p>

I'd change it to return const std::string&.  The caller will probably make a copy of the result anyway if you don't change all the calling code, but it won't introduce any problems.
One potential wrinkle arises if you have multiple threads calling name().  If you return a reference, but then later change the underlying value, then the caller's value will change.  But the existing code doesn't look thread-safe anyway.
Take a look at Dima's answer for a related potential-but-unlikely problem.