スマートポインタTIPS
unique_ptrから生ポインタを取得して、メンバ変数に保持するのは、生存管理ができなくなるので、やめた方がいい。 一時変数として使う分には、まだ許容できる場合あり。 この場合、shared_ptrを使えば生存管理でき…
unique_ptrから生ポインタを取得して、メンバ変数に保持するのは、生存管理ができなくなるので、やめた方がいい。 一時変数として使う分には、まだ許容できる場合あり。 この場合、shared_ptrを使えば生存管理でき…
みたいな形で、std::moveを指定して、vectorに所有権を移す必要がある。 ちなみに、「v.push_back(ptr);」とすると、ビルドが通らなくなる。
一般的な用語ではなく、Effective Modern C++の造語っぽい。 通常の右辺値参照T&&が、右辺値のみしかバインドできないのに対し、ユニヴァーサル参照は、どんなものもバインド可能。 ユニヴァー…
構文 ムーブコンストラクタとムーブ代入演算子オーバーロードはセットで定義することが推奨される。 実装例
構文 コピーコンストラクタは仮引数にconstと参照がついていることがポイント。 コピーコンストラクタとコピー代入演算子オーバーロードはセットで定義することが推奨される。 実装例
理解が浅いので間違っている可能性がある。 前提として、std::vectorのpush_backとemplace_backの定義が重要となるので、下記に記載する。 (2)のxは右辺値参照。 テンプレート関数の仮引数なので…
https://cpprefjp.github.io/reference/optional/optional.html 上記の例がわかりやすい。 std::optionalは、無効値が発生しうる関数の戻り値として、無効値…
派生クラスをfinalにしたら、そもそも継承できないので、派生クラスの関数にvirtualとfinalはいらないと思う。 明示的にvirtual、finalを付与することもできるが、これを明示的にやる意味ある? あるとす…
コンストラクトとデストラクタは純粋仮想関数にはできない。 コンストラクタにvirtualは付与できない。 基底クラスを抽象クラスとするのであれば、デストラクタに、virtualとdefaultをつけるのが無難。 ただし、…
https://qiita.com/hal1437/items/b6deb22a88c76eeaf90c 上記リンクみれば、ざっくりわかる。 ->decltype を使うパターンについて、わかってないので、わかった…
最近のコメント