問題タブ [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++ - このコードでcopyctorが使用されているのはなぜですか?
このコードを実行すると、o/pが得られます。
A :: A(int)、n_ = 10
A :: A(int)、n_ = 20
どうやら、コピーコンストラクタは決して呼び出されません。
ただし、プライベートにすると、次のコンパイルエラーが発生します。
Test.cpp:関数内'int main()':
Test.cpp:21:エラー:'A :: A(const A&)'はプライベート
ですTest.cpp:38:エラー:このコンテキスト内
コンパイラが実際にコピーコンストラクタを使用していないのに、なぜ文句を言うのですか?
gccバージョン4.1.220070925(Red Hat 4.1.2-33)を使用しています
c++ - C ++:ポリモーフィックコピーコンストラクターは機能しますか?
検討:
「newA( b1)」が新しいBコピーを作成してAを返すことを解決できた場合、C ++は壊れますか?
これも役に立ちますか?
c++ - パラメータを使用してベース オブジェクトを構築することにより、派生クラスからオブジェクトを作成できますか?
つまり、基本クラスshape
と派生クラスが与えられた場合rectangle
:
rectangle
次のように呼び出して のインスタンスを作成できるかどうか知りたいです。
rectangle
そして、次を呼び出して新しいものを取得するために、コピーコンストラクターを実装するにはどうすればよいですか:
c++-cli - C ++/CLI混合モードのAutoPtr
ネイティブの.libファイルと.hファイルの周りにC++/CLIラッパーがあります。ラッパークラスでAutoPtrクラスをかなり広範囲に使用して、ラッピング用に作成したアンマネージオブジェクトを管理します。コピーコンストラクター/代入演算子で障害にぶつかりました。
Kerr氏のAutoPtrクラスを使用する:http ://weblogs.asp.net/kennykerr/archive/2007/03/26/AutoPtr.aspx
彼は、代入演算子の動作を再現するために、(コメントで)次のことを提案しています。
私はそれが真実だと信じています。しかし、コードをコンパイルすると、次のようになります。
-次のエラーが発生します。
エラーC2662:'WrapTest :: AutoPtr :: GetPointer':この'ポインタを' const WrapTest::AutoPtr'から'WrapTest:: AutoPtr%'に変換できません
誰かが同様の問題を経験しましたか?
回答の背景をさらに詳しく説明するために、署名から「const」キーワードを削除しました。コピーコンストラクターのコードの正確さに関しては微笑んでいないことは知っていますが、CLRはそれをまったく好きではありません。つまり、メモリ管理の核となるCLRを信じています。
署名にconstを残してから、GCHandleまたはpin_ptrを使用して、コピーの実行中にメモリが移動しないようにすることは可能でしょうか。
c++ - C++ が非 const から const への変換を copy ctor で許可しないのはなぜですか?
私は2つのゲッターメンバーを持っています:
const 識別子がないことに注意してください (忘れてしまいましたが、これが機能しない理由を知りたいです)。これをコンパイルしようとしています:
コンパイラはこれを拒否します。C++ では、次のような関数パラメーターで非 const から const への変換が許可されていると思いました。
コピー コンストラクターで同じことができないのはなぜですか? const 識別子は、何も変更しないことを約束することを意味します。
c++ - stl vector.push_back()抽象クラスはコンパイルされません
クラスタイプ「xx」を含むstlベクトルがあるとしましょう。xxは抽象です。次のようなことをすると、コンパイラが「インスタンス化」できないという問題が発生しました。
これは、コピーコンストラクターを呼び出す必要があるためだと思います。この問題を回避するには、xxではなくxx*をベクトルに格納します。より良い解決策はありますか?それは何ですか?
c++ - コピーコンストラクターのパラメーターの選択
最近、インタビューでコピーコンストラクターのパラメーターについて尋ねられました。
[編集]コピーコンストラクター機能を実装するC++言語の設計者として、constオブジェクトへのconstポインターではなく定数参照パラメーターを選択するのはなぜですか。
ポインターをNULLに割り当てることができるので、コピーコンストラクターではおそらく(意味的に)意味がないため、ポインター変数が独立したオブジェクトであるという事実(効率の点ではおそらく良くない)など、いくつかのアイデアがありました。一方、参照は実際のオブジェクトの単なるエイリアスです(したがって、オブジェクトを渡すためのより良い方法です)。
他のアイデアはありますか?
c++ - これは良いコードですか?(コピーコンストラクターと代入演算子)
なんらかの理由で、クラスにコピー コンストラクターと operator= の両方を提供する必要があります。operator=
コピーctorを定義すればいらないと思っていたのですが、欲しくQList
なりました。それはさておき、私はコードの重複が嫌いなので、このようにして何か問題はありますか?
そして、好奇心から、コードの大部分がコピー ctor にあり、operator=
何らかの形でそれを利用するように切り替える方法はありませんか? 私は試しreturn Fixture(f);
ましたが、それは好きではありませんでした。
コピー コンストラクターと代入演算子が、継承元のクラスによって暗黙的に無効にされていることをより明確にする必要があるようです。なんで?これは、単独でインスタンス化するべきではない抽象基本クラスであるためです。ただし、このクラスはスタンドアロンを想定しています。
c++ - operator= とコピー コンストラクターの間のコードの重複を減らす
デフォルト以外のコピー コンストラクターと代入演算子 (ポインターのリストを含む) を必要とするクラスがあります。コピー コンストラクターと代入演算子の間のコードの重複を減らす一般的な方法はありますか?