問題タブ [default-copy-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 宣言コンストラクターと引数転送コンストラクターを使用した構造体の暗黙的なコピー
構造体に転送引数でメンバーを初期化させたいと思います。これは、デストラクタを宣言するときと、関数から構造体を返そうとするとき (コピー コンストラクタが必要だと思います) を除いて、コンパイルして正常に動作します。
コンパイラ エラーは次のとおりです。
のコピー コンストラクターを生成しようとしているように見えますFooContainer
が、Foo を初期化する方法がないため失敗します。それでも、コンストラクタまたはデストラクタを削除すると、FooContainer
正常にコンパイルされます.* なぜこれを行うのですか?
*とにかく GCC 4.9.2でhttp://cpp.sh/に。Ubuntu の g++ 4.4.3 では、デストラクタが宣言されていなくても同じエラーが発生します。
c++11 - デストラクタの明示的な宣言を伴う暗黙的に生成されたコンストラクタ
問題は、C++ プログラミング言語の第 4 版が次のように述べていることです。
この特定のケースでは、コピーまたは移動操作を削除するのを忘れていても、害はありません。ユーザーがデストラクタを明示的に宣言したクラスでは、移動操作は暗黙的に生成されません。 さらに、この場合、コピー操作の生成は推奨されません (§44.2.3)。これは、コンパイラが暗黙的にデストラクタを提供する場合でも、デストラクタを明示的に定義する正当な理由となります (§17.2.3)。
私はこのコードを試しました:
ここにはエラーや例外はありません。C++98 ではコピー コンストラクターを暗黙的に生成する必要があることはわかっていますが、4 番目に、コピーは非推奨であると書かれています。どういう意味ですか?
c++-cli - gcnew をコピー コンストラクタとして使用する
gcnew
管理メモリの割り当てに使用されることを知っています。System::String(System::String ^)
コンストラクターも見つかりませんでした。System::String
通常、クラスをコピーしたい場合は、次のようなものを使用します
しかし、これはどうですか?