stl字符串返回const引用与const char*

use*_*673 2 c++

我班上有一个STL字符串成员变量,

class A {
public:
   const char* getData1() const { return data.c_str());
   const string& getData2() const { return _data; }
private:
   string _data;
};
Run Code Online (Sandbox Code Playgroud)

getData1()getData2()哪一个更好?

Dan*_*Dan 5

返回字符串引用的那个是两个选择中较好的一个.如果在内部更改字符串,则先前返回的字符串引用仍然有效,但const char *可能不会.

比这些选择中的任何一个更好的可能是按价值返回.

std::string getData3() const { return data_; }
Run Code Online (Sandbox Code Playgroud)

另外,我建议不要在变量前面添加下划线,并删除该using namespace std;语句.