我正在開發C++ 11項目。其中我有一個shared_ptr
控股std::string
數據。需要在使用shared_ptr時實現析構函數,複製構造函數,賦值運算符
class Base {
public:
Base() : Base(string()) {}
virtual ~Base() = default;
Base(const string &str) {
str_ = std::make_shared<string>(str);
}
private:
std::shared_ptr<std::string> str_;
};
我的問題是:在這裏,我應該實現析構函數釋放str_
,拷貝構造函數和賦值操作符把副本的照顧? 如果我依賴編譯器提供的默認版本,就足夠了嗎? 我想允許Base *b1 = new Base("string");
不,您不需要創建它們。 –
爲什麼使用shared_ptr來保存字符串?你真的想要這個對象的副本引用相同的字符串嗎?如果是這樣,爲什麼? –
您可以依靠編譯器提供的默認實現,因爲默認情況下提供的簡單成員副本就足夠了。 –