复制它。在引用计数友好的语言中,您将“保留”字符串。但这是 C++。如果你不复制它,你就有很高的悬空指针风险。
class Foo
{
public:
Foo(const char* _data)
{
mData = new char[strlen(_data) + 1];
strcpy(mData, _data);
}
Foo& operator=(const Foo& _other) { /* deep copy string */ }
Foo(const Foo& _other) { /* deep copy string */ }
~Foo() { delete[] mData; }
private:
char* mData;
};
或者
class Foo
{
public:
Foo(const char* _data) : mData(_data) { }
private:
std::string mData;
};
或者
class Foo
{
public:
Foo(const std::string& _data) : mData(_data) { }
private:
std::string mData;
};
如您所见,该std::string
选项更容易。