問題タブ [auto-ptr]

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 投票する
4 に答える
2040 参照

c++ - vector.push_back(auto_ptr) がコンパイルされないのはなぜですか?

STL はプログラマーが auto_ptr をコンテナーに入れることを禁止できることを知りました。たとえば、次のコードはコンパイルされません。

auto_ptr にはコピー コンストラクターがありますが、なぜこのコードはコンパイルできるのでしょうか?

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

c++ - auto_ptr を明示的にゼロ初期化する必要がありますか?

私の同僚の中には、コンストラクターの初期化リストで明示的に初期化std::auto_ptrすることを好む人もいますが、明示的な初期化なしでコンストラクターで初期化されます。では、それを行う理由はありますか?00

0 投票する
5 に答える
4744 参照

c++ - std::auto_ptr の使用感

の意味は何auto_ptrですか?このコードを見てください:

これを使う意味は何auto_ptrですか?

  • 通常のクラス初期化変数(a)として、スコープ外になるとクラスデストラクタを呼び出します。
  • このポインターをクラスポインター (func) を持つ関数に渡すことはできません
  • auto_ptr が delete not を呼び出すため、ポインターauto_ptrA[]orに使用できません。char[]delete[]

唯一の考えは、delete を書く必要がないということですが、範囲外になったときにポインターが破棄される場合、ポインターの意味は何ですか。ポインターを使用して、変数のライブを制御します。

auto_ptr通常の変数初期化はスタック上にあり、ポインターはヒープ上にありますが、通常のポインターではなく使用する意味を教えてください。

0 投票する
2 に答える
1968 参照

c++ - std :: auto_ptrを使用して動的配列を宣言するにはどうすればよいですか?

私はint以下のような動的配列を宣言しようとしています:

でこれを行うことはできますstd::auto_ptrか?

私は次のようなことを試しました:

しかし、それはコンパイルされません。

構造を使って動的配列を宣言できるかどうか、そしてその方法を考えていauto_ptrます。ありがとう!

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

c++ - C++の自動ポインタと共有ポインタの違いは何ですか

自動ポインタはオブジェクトを所有しているのに対し、共有ポインタはそれらを指す多くのオブジェクトを持つことができると聞いています。共有ポインタを常に使用しないのはなぜですか。

これに関連して、スマートポインターとは、人々はこの用語を共有ポインターと同じ意味で使用します。彼らは同じですか?

0 投票する
5 に答える
1342 参照

c++ - std :: move vs std :: auto_ptr?

C ++ 11の「move」(r値参照)で何ができstd::auto_ptrますか?(私が理解しているように、それらは1つのアイデアの異なる実装です。)

そして再び古い質問:std::auto_ptrとても悪いコンポーネントですか?

0 投票する
2 に答える
3592 参照

c++ - auto_ptrを auto_ptr にキャスト

次の問題を理解するのを手伝ってください。

以下のコード例を見てください。

これを行うことが許可されていない理由:

コンパイラ (MSVCPP 11):

0 投票する
5 に答える
2795 参照

c++ - 'auto_ptr' と STL コンテナ: 間違った使い方の例を書く

このチュートリアルを読んだ後に提起されたこの質問: http://www.cprogramming.com/tutorial/auto_ptr.html

そこでは、次のステートメントを見つけることができます。たとえば、標準テンプレート ライブラリで auto _ptr オブジェクトを使用すると、STL の一部の関数がベクター コンテナー クラスなどのコンテナー内のオブジェクトのコピーを作成する可能性があるため、問題が発生する可能性があります。1 つの例は、並べ替え対象のコンテナー内のオブジェクトの一部のコピーを作成する sort 関数です。結果として、このコピーはコンテナ内のデータを簡単に削除できます!

'auto_ptr' に関する論文のほとんどは、次のようなことを教えてくれsortますstd::vector

したがって、私の目標は、この点を説明するコード サンプルを作成すること、またはそのような例が理論的に正しく、実際には奇妙であることを証明することです。

PS @everybody_who_also_knows_that_auto_ptr_is_deprecated 私これを知っています。しかし、新しいポインター コンテナーを使用できない可能性がある技術的な理由 (レガシー コードまたは古いコンパイラー) を考慮していませんか? さらに、この質問は古いものと悪いものについてです (もしよろしければ) auto_ptr.

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

c++ - 一時的な非 const コピー コンストラクターを許可する方法

非 const 参照を取るコピー コンストラクターを持つクラスを一時オブジェクトからコピー構築できるようにするにはどうすればよいですか?

背景はこうです。

Base からすべて継承するオブジェクトへのポインターのリストを返す関数があるため、vector<Base*>. それはあまり選択肢ではないので、デストラクタ内のすべての要素を削除vector<auto_ptr>する単純なラッパーを書きたいと思いました。vector<Base*>

私は次の問題に直面しています:

私のクラスには、次のようなコピー コンストラクターがあります。

ポインタ リストを新しいインスタンスにコピーし、古いインスタンスでクリアできるようにします。

しかし、明らかに、一時変数は非定数参照にバインドされないため、戻り値では機能しません。関数から auto_ptr を返すことができるのを見て、どのように実装したのでしょうか?

注: 私は C++11 やブーストを使用できないため、ムーブ セマンティクスや unique_ptr はオプションではありません。

それが役立つ場合、これはこれまでの私のコードです:

0 投票する
1 に答える
35 参照

c++ - 以下の例で例外がスローされると、pb が指す Shape が破棄されるのはなぜですか?

この例は、Stroustup の本、第 3 版、セクション 14.4.2 から引用したものです。

「ここでは、例外がスローされるかどうかに関係なく、Rectangle、pb が指す Shape、および pc が指す Circle が削除されます。」