저는 C++ 11 프로젝트를 진행하고 있습니다. 그 안에 std::string
데이터를 가지고있는 shared_ptr
이 있습니다.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을 사용하여 문자열을 보유하고 있습니까? 정말이 문자열을 참조하도록이 객체의 복사본을 원하십니까? 그렇다면 왜? –
기본적으로 제공되는 단순한 memberwise-copy만으로 충분하기 때문에 컴파일러가 제공하는 기본 구현에 의존 할 수 있습니다. –