問題タブ [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.

0 投票する
11 に答える
3379 参照

c++ - C++: コンストラクターのコピー: ゲッターを使用するか、メンバー変数に直接アクセスしますか?

コピー コンストラクターを持つ単純なコンテナー クラスがあります。

ゲッターとセッターを使用すること、またはメンバー変数に直接アクセスすることをお勧めしますか?

  • この例では、すべてのコードがインラインですが、実際のコードにはインライン コードはありません。

更新 (2009 年 9 月 29 日):

これらの回答のいくつかはよく書かれていますが、この質問の要点を見逃しているようです:

  • これは、getter/setter と変数の使用について説明するための単純な不自然な例です

  • イニシャライザ リストまたはプライベート バリデータ関数は、実際にはこの質問の一部ではありません。どちらの設計でもコードの保守と拡張が容易になるかどうか疑問に思っています。

  • この例の文字列に焦点を当てている人もいますが、これは単なる例であり、代わりに別のオブジェクトであると想像してください。

  • 性能は気にしません。私たちはPDP-11でプログラミングしていません

0 投票する
3 に答える
2415 参照

c++ - リンクリストとコピーコンストラクター

基本的な単一リンク リスト クラスを C++ で作成しようとしています。何年も前にデータ構造のクラスでやったのですが、詳細を思い出せません。

Node クラスにはコピー コンストラクターが必要ですか? メンバー変数として Node* があり、私の知る限り、動的メンバーを持つクラスのコピー コンストラクター、デストラクター、および代入演算子を常に記述する必要があります。しかし、ネットで見た限りでは、List クラスがノードのコピーを処理します。これは本当にそうなのですか? もしそうなら、なぜですか?

0 投票する
3 に答える
195 参照

c++ - この関数で参照引数を使用する利点はありますか?

次のクラスを定義しました。

メンバー AddMove は次のように定義されます。

この関数への参照引数がない場合、コピー コンストラクターは 2 回呼び出されましたが、参照引数がある場合は 1 回しか呼び出されませんでした。コピー コンストラクターを 2 回ではなく 1 回だけ呼び出すのは、参照引数を使用する正当な理由ですか?

0 投票する
6 に答える
5243 参照

c++ - Is it bad form to call the default assignment operator from the copy constructor?

Consider a class of which copies need to be made. The vast majority of the data elements in the copy must strictly reflect the original, however there are select few elements whose state is not to be preserved and need to be reinitialized.

Is it bad form to call a default assignment operator from the copy constructor?

The default assignment operator will behave well with Plain Old Data( int,double,char,short) as well user defined classes per their assignment operators. Pointers would need to be treated separately.

One drawback is that this method renders the assignment operator crippled since the extra reinitialization is not performed. It is also not possible to disable the use of the assignment operator thus opening up the option of the user to create a broken class by using the incomplete default assignment operator A obj1,obj2; obj2=obj1; /* Could result is an incorrectly initialized obj2 */ .

It would be good to relax the requirement that to a(orig.a),b(orig.b)... in addition to a(0),b(0) ... must be written. Needing to write all of the initialization twice creates two places for errors and if new variables (say double x,y,z) were to be added to the class, initialization code would need to correctly added in at least 2 places instead of 1.

Is there a better way?

Is there be a better way in C++0x?

#xA;

Output:

#xA;

Alternative Copy Constructor:

#xA;
0 投票する
5 に答える
654 参照

c++ - C++で配列を初期化する

オブジェクトの配列を初期化しようとしています:

しかし、これを実行しようとすると、オーバーロードされたコンストラクターではなく、コピーコンストラクターを呼び出そうとし続けます。これを修正するためのアイデアはありますか?

問題の2つのコンストラクターは次のとおりです。

他のものにはコピーコンストラクタが必要なので、削除できません。

ご協力いただきありがとうございます!

0 投票する
6 に答える
1236 参照

c++ - パブリック代入演算子を持つプライベート コピー ctor がある場合のエラー

次のコードがコンパイルされない理由を説明できますか?

私が受け取るエラー:

注: private:キーワードを削除すると、コードはコンパイルされますが、コピー ctor は呼び出されません。では、プライベートの場合にエラーになるのはなぜですか?

それが重要かどうかはわかりませんが、私は使用しています:

0 投票する
8 に答える
1688 参照

c++ - C++ で空のプライベート コンストラクターに対してのみ宣言を使用するのは正しいですか?

たとえば、これは正しいです:

または、定義を提供する必要があります。

? 現在の回答をありがとう。この質問を拡張してみましょう - コンパイラは、この例の 1 つでより良いコードを生成しますか? ctor に本体を提供すると、コンパイラがコンパイル単位にいくつかの(空の)コードを強制的に含めると想像できますか?これは自動生成コードにも当てはまりますか?

0 投票する
3 に答える
88364 参照

c++ - C++でコンストラクターと=演算子のオーバーロードをコピーします:共通関数は可能ですか?

コピーコンストラクター以来

および = 演算子のオーバーロード

ほとんど同じコード、同じパラメーターを持ち、戻り値のみが異なります。両方が使用する共通の関数を持つことは可能ですか?

0 投票する
4 に答える
319 参照

c++ - C++クラス継承の問題

こんにちは私は2つのクラスを持っています。1つはInstructionと呼ばれ、もう1つは命令クラスから継承するLDIと呼ばれます。

次に、Instruction型のポインターを作成し、LDI型の新しいインスタンスを指すようにします。

次のコンパイラエラーが発生します。私が間違っていることについて何か考えはありますか?

0 投票する
6 に答える
20451 参照

c++ - 二分木 C++ のコピー コンストラクター

次の定義を持つ Tree クラスがあります。

TreeNode はノードを表し、データ leftPtr および rightPtr を持ちます。

コピー コンストラクターを使用してツリー オブジェクトのコピーを作成するにはどうすればよいですか? 私は次のようなことをしたい:

どんな助けでも大歓迎です!