ポストインクリメントオペレータは、起点ポインタをnullに設定するのに似たものがありますか?移動セマンティクス:ポストセットnullptr
募集行動:
Class MyClass{
public:
int * ptr;
MyClass(MyClass && origin) noexcept;
MyClass(){}
};
MyClass::MyClass(MyClass && origin) noexcept:
ptr(origin.ptr){origin.ptr=nullptr};
回避策では、望んでいたセマンティック:
int * moveptr(int * & ptr){
int * auxptr=ptr;
ptr=nullptr;
return auxptr;
}
MyClass::MyClass(MyClass && origin) noexcept: ptr(moveptr(origin.ptr)){};
は、たぶん私は標準から何かが欠けているんだけど、私はへのポインタの種類を表すために何かを見つけることができませんでしたは所有者ではないを表すだけでなく、偶発的なポインタの共有を防止します。
私は何もしないカスタムディターターでunique_ptrを使用できますが、それはポインタの元の割り当てを奇妙にするでしょう。
は実際にそれをしません'rhs.p = nullptr'という余分な行を書くのは気になりますか? –
これをやることを忘れるのではなく、気にすることではありません。 – xvan
とにかくこれは慣用的なことですが、私はそれが何らかのプレマイドの解決策を持っているのではないかと疑います。 –