問題タブ [this-pointer]

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

c++ - *this を使用するのは良い考えですか?

かどうかわかりません

メンバー関数を呼び出したクラスのインスタンスを返す唯一の方法は? 私が尋ねた理由は、インストラクターが必要に応じてポインターの使用を避けるように言ったからです。これは、必要な唯一の方法が this ポインターを返すことである場合ではないかと思います。

プライベート データ メンバーの分子と分母を保持する分数クラスを使用しています。私が話しているメンバー関数は、たとえば 2 つの分数を加算するために使用されます。

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

インストラクターは私たちに C = A += B を実行させたいと思っているので、それが理由だと思います。

0 投票する
7 に答える
1753 参照

c++ - g++でこのポインタの動作を削除します

プログラムの出力を見ると、devを呼び出す前に関数abcで「deletethis」が呼び出されているにもかかわらず、「dev」関数がまだ呼び出されているようです。gcc / g ++はこれをどのように処理しますか?

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

c++ - 初期化リストでスーパークラスのアドレス/ポインタを使用

コンテキスト 1: クラス D: public B1、public B2{};

コンテキスト 2: B2 は B1 を使用して初期化します: B2( B1 * ) //B2 のコンストラクター

私の質問はDの初期化リストにあります:

D::D() : B1(), B2( ? )... には何が必要ですか?

? に " (B1*)this " を入れたくない 初期化リストで「this」を使用するのは良くないためです。そして B1 部分は初期化されているので、それを使用するのは理にかなっています。

私は何をすべきか ?

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

c# - this キーワードで ref パラメータを使用していますか?

this キーワードを強制的に ref 引数として機能させる方法はありますか? オブジェクトの複数のプロパティを変更するビジターを渡したいのですが、これは値パラメーターのように振る舞いたいだけです。

オブジェクト内のコード:

訪問者のコード:

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

javascript - オブジェクト作成時の js-object 変数の相互参照

概要:

次のようなことが可能かどうか知りたいです。

{a: 'A',b: self.a}...またはまたはその他のような他のポインターを使用して{a: 'A',b: own.a}...

完全な質問:

Ext.extend を使用して MyBaseModule を拡張しようとしていますが、Ext.extend() に渡された拡張オブジェクトの値を相互参照する必要があります。

まだ MyModule のコンテキストに入っていないため、これを使用してオブジェクトを参照することはできません (12 行目の下の例を参照)。最初にオブジェクトを作成せずに、このような値を参照する他の方法はありますか?

それとも、以下が唯一の解決策ですか?大規模な拡張定義では読みにくいため、可能であればこれを避けたいと思います。

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

c# - C# でフォーム上のコントロールを操作するときに THIS キーワードを使用する場合

私はまだ C# をマスターするには程遠いですが、私の中の子供は、日々プログラミングを改善し続けるように私を後押ししています。
WinForms アプリケーションを作成するとき、実際に多くのコントロールを変更して使用したいと考えています。
私が理解していないのは、this.controlキーワードを使用する必要がある場合と、 just を使用する必要がある場合ですcontrol
サンプル:
ラベルのテキストを変更したい場合は、次のように書くことができます

また

これらのうち、正しい方法はどれですか? thisWinForms でコントロール (データグリッド、テキスト、テーブルなど) を使用するときにキーワードを使用する簡単な説明はありますか?

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

vb.net - VB.NET で "Me" ByRef を渡すことが合法なのはなぜですか?

ほんの少し前に、以下が合法であることを発見してショックを受けました (C# の同等物は間違いなく合法ではありません)。

しかし、私にとってさらに奇妙なのは、私が期待することをしていないように見えることです。

上記の出力は、私が思っていたような「0」ではなく、「10」を出力します (もちろん、この期待自体にある種の恐怖が吹き込まれていました)。したがって、を渡すことができるMe ByRefように見えますが、動作はコンパイラによって何らかの形でオーバーライド (?) され、を渡したMe ByValのようになります。

  1. なぜ渡すことが合法なのMe ByRefですか?(下位互換性の説明はありますか?)
  2. これを行う動作はコンパイラによってオーバーライドされるというのは正しいですか? そうでない場合、何が欠けていますか?
0 投票する
8 に答える
1734 参照

c++ - this-pointer アドレスがデストラクタで予想されるものと異なる理由 (c++)

基本クラスのデストラクタの this-pointer に奇妙な問題があります。

問題の説明:

私は3つのクラスを持っています: A1A2A3

A2はA1からパブリックに継承し、 A3からプライベートに継承します

A3には関数getPrimaryInstance()があります ... A2インスタンスへのA1タイプの参照を返します。

A3コンストラクターは次のようになります。

( regInst(...)は、すべてのA3インスタンスへのポインターを格納するA1で定義された関数です)

同様にA3デストラクタ:

↑ここで問題発生!

primaryという名前の静的なA2インスタンスがプログラムの終了時に破棄されると、 A3デストラクタが呼び出されますが、~A3内では、破棄するのと同じインスタンスの関数にアクセスしようとします。 =>実行時のアクセス違反!

したがって、次のような単純なifステートメントで修正できると思いました。

(二重キャストの理由は継承です:)
A1 A3
. \ /
. A2
(しかし、それは重要ではありません。単に(int)キャストなどを使用できます)

キッカーは、それがまだクラッシュすることです。デバッガーでコードをステップ実行すると、A2 プライマリインスタンスが破棄されたときに、デストラクタのthisポインターとgetPrimaryInstance()を呼び出して取得したアドレスが何らかの理由でまったく一致しないことがわかります。this -pointer が指すアドレスが、(私の限られた知識では) あるべきアドレスと常に異なる理由を理解できません。:(

デストラクタでこれを行う:

また、違いが一定ではないことも示しました(一定のオフセットがあるという理論が簡単にありました)ので、同じものであるはずの2つの完全に異なるオブジェクトのようです。:(

私は VC++ Express (2008) でコーディングしています。少しグーグルで調べた後、次の MS 記事を見つけました:
FIX: The "this" Pointer Is Incorrect in Destructor of Base Class

これは私が抱えている問題とは異なります (また、C++.Net 2003 で修正されたと思われます)。しかし、症状は非常に似ているように見え簡単回避
策が提示されたので、 試しみることにしました.

そしてそれはうまくいきました!this -pointerはまだ間違っているように見えますが、アクセス違反は発生しなくなりました。

だから私の大きな質問はなぜですか?this
-pointer が本来あるべき場所を指していない のはなぜですか? 上記のように継承にvirtualを 追加すると解決するのはなぜですか(これはまだ&getPrimaryInstance()以外の場所を指しているにもかかわらず)? これはバグですか?MS 以外の環境で試すことはできますか? そして最も重要なこと:これは安全ですか?? 確かにもう文句は言いませんが、私はまだそれがすべきことをしていないのではないかと心配しています. :S


誰かがこれについての知識や経験を持っていて、それを理解するのを手伝ってくれるなら、私はとても感謝しています.

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

c++ - this ポインターの概念を説明できますか?

thisポインターの概念を、できれば例を使って理解する必要があります。

私は C++ を初めて使用するので、理解できるように簡単な言語を使用してください。

0 投票する
7 に答える
2290 参照

c++ - このポインタを使用しても大丈夫ですか?

重複の可能性:
これを使用する理由はありますか->
いつこれを使用する必要がありますか->使用する必要がありますか?いつポインタ
を明示的に使用する必要がありますか?this

クラスへのポインタを操作するときthis->は、クラスの変数の前にを追加して、一時変数などではなく、現在のクラスにあることを明確にします。何かのようなもの

それ以外の

余分なものを追加しても大丈夫thisですか、それともコードの可読性を低下させますか?