ムーブコンストラクタを定義する以下のようなコードを見かけたのですが、この書き方は正しいのでしょうか。
C++
1 MyClass(MyClass&& other) noexcept { 2 *this = std::move(other); 3 }
以下のようなケースで、不定値のptrをdeleteしてしまうことはないのでしょぅか。
C++
1class MyClass { 2 int* ptr; 3public: 4 MyClass() : ptr(new int) {} 5 ~MyClass() { delete ptr; } 6 MyClass(MyClass&& other) noexcept { 7 *this = std::move(other); 8 } 9 MyClass& operator=(MyClass&& other) noexcept { 10 if (this != &other) { 11 delete ptr; 12 ptr = other.ptr; 13 other.ptr = nullptr; 14 } 15 return *this; 16 } 17};
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/15 02:46