問題タブ [self-destruction]
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++ - 「これを削除」を実行するときの仮想デストラクタの欠如
C ++ FAQ Liteのセクション16.15で説明delete this
し、次に言及します。
当然、仮想デストラクタがない場合に、このポインタが基本クラスへのポインタである場合は、通常の警告が適用されます。
なぜこれが本当ですか?このコードを考えてみましょう:
このように使用されます:
呼び出しでは、仮想デストラクタがない場合でもp->suicide()
、のデストラクタがMyKlass
期待どおりに呼び出されます。ISuicidal
私にとって、これは理にかなっています。なぜなら、MyKlass::suicide
では、の静的タイプはでthis
あることがわかっているMyKlass*
ので、正しいデストラクタが呼び出されるからです。typeid
これは、内に電話をかけることで簡単に確認できsuicide
ます。
それで、FAQエントリは不正確ですか、それとも私はそれを誤解していますか?
c++ - これを削除するとコードがクラッシュする
これを削除しようとすると、セグメンテーション違反が発生します。
これを削除することについてあなたがどう思うかはわかりますが、私の前任者が残したものです。私が取るべきいくつかの予防措置を認識しており、それらは検証され、対処されています。
どのような状況でこのクラッシュが発生するかはわかりませんが、たまにしかありません。約 95% の場合、コードは完全に正常に実行されますが、何らかの理由で破損しているように見えてクラッシュすることがあります。
クラスのデストラクタは何もしません。
何かが私のヒープを別の場所で破損していて、this ポインターが何らかの形で台無しになっていると想定する必要がありますか?
編集:要求どおり、クラッシュコード:
オブジェクトは new で作成されました。どの種類の配列にもありません。
bash - 自己削除bashスクリプト
自分自身を削除するステートメントに遭遇した後でも、bashスクリプトを実行するにはどうすればよいですか?たとえば、次のようなtest.shスクリプトを実行した場合:
スクリプトは、それ自体を削除する前に最後まで実行されます
c++ - QObjectを自己削除する最適な方法
NodeとNodeContainerの2つのクラスがあります。
ノードは親を持つことも持たないこともできます。Nodeクラスの破棄を実装するためのより良い方法は何ですか?
1)親にアクセスし、そこから自分自身を破壊します
2)信号を発し、後で親にそれを破壊させます
c - Cで自己破壊的なプログラムを書くことは可能ですか?
実行時にそれ自体(バイナリ)を削除してから正常に終了するプログラムをCで作成することは可能ですか?もしそうなら、これを行う最も簡単な方法は何ですか?
java - 自己破壊アプリケーション
「このテープは 5 秒で自己破壊します。頑張ってください、ジム」 ...
あらかじめ設定された使用時間またはその他の条件に達すると、アプリケーション自体 (または実行可能なラッパー フォーム) を削除することは可能でしょうか?
または、アプリケーションを役に立たなくするために使用できる他のアプローチは何ですか?
ここでの目的は、ベータ版を期限切れにして、ユーザーに最新バージョンを入手してもらうことです。
python - 実行終了時にスクリプトを自動削除するにはどうすればよいですか?
Windowsでの実行(自己削除)の最後に.pyファイルを削除するPythonスクリプトを作成することは可能ですか?
visual-c++ - MFC の OnOk から delete this を呼び出す
以下のコードのように、OnOk イベント ハンドラ関数から delete を呼び出すのが正しいです。
c++ - std::vector 要素が「自殺」した場合 (delete this; を使用) はどうなりますか?
Item
s のベクトルがあるとします。
次に、コードの他の部分で、
suicide
関数は次のとおりです。
ベクターサイズとは何items
ですか?現在の配置はどうなっていますか?こんなことしていいの?
編集(追加の質問をしてもよろしいですか?): 出力の目的の配置が{item1, item3}
、サイズが2
で、ダングリング ポインターがない場合、(それ自体から) 自己破壊的な方法でそれを行う方法はitem2
?
編集2:すべての回答をありがとう!素晴らしい。だから私は最終的に決定し、オブジェクトの外からそれを行う方法を見つけました。なぜなら、それは悪い習慣であり、不必要に複雑だったからです