問題タブ [member-functions]
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++ - メンバー関数を繰り返し呼び出すと問題が発生しますか?
私はJavaとCの両方でプログラミングしましたが、今はC++で手を汚そうとしています。
このコードを考えると:
Javaでは、の値が必要な場合はいつでもtickets_sold
、ゲッターを繰り返し呼び出します。
例えば:
CIでは、構造内の特定の変数の値を取得するだけです。
したがって、Cで構造体を使用している間、Javaで行う2つの呼び出し、つまり2つのゲッターを節約します。つまり、これらが実際の呼び出しなのか、Javaが何らかの形でそれらの呼び出しをインライン化するのかさえわかりません。
私のポイントは、C ++のJavaでも使用したのと同じ手法を使用する場合、getterメンバー関数へのこれらの2つの呼び出しにコストがかかるのでしょうか、それともコンパイラーがコードをインライン化することを何らかの形で知っているのでしょうか。(したがって、関数呼び出しのオーバーヘッドを完全に削減しますか?)
または、次を使用することをお勧めします。
タイトなコードを書き、不要な関数呼び出しを避けたいのですが、Javaでこれを気にします。なぜなら、私たち全員がその理由を知っているからです。ただし、コードを読みやすくし、private
andpublic
キーワードを使用して、実行する内容を正しく反映する必要があります。
c++ - decltype でのメンバー関数呼び出し
次のコード:
次のエラーでコンパイルに失敗します:
それを次のように変更すると:
別のエラーが発生します:
これらのいずれかの何が問題になっていますか? gcc 4.6 を使用しています
c++ - テンプレート基本クラスでテンプレートメンバー関数を呼び出す方法は?
基底クラスでテンプレート化されていないメンバー関数を呼び出す場合、その名前をusing
派生クラスにインポートして使用できます。これは、基本クラスのテンプレート メンバー関数でも可能ですか?
それだけでusing
は機能しません (g++-snapshot-20110219 -std=c++0x を使用):
次のように、基本クラスに明示的に接頭辞を付けることを知っています
正常に動作しますが、問題は次のとおりです。単純な using 宣言を使用する場合と使用しない場合 (f
テンプレート関数ではない場合と同様) は可能ですか?
これが不可能な場合、誰かがその理由を知っていますか?
c++ - C++ オブジェクトがメンバー関数に関する情報を保持する方法
C++ オブジェクトがメンバー関数に関する情報を保持する方法。上記のコードを考えてみましょう。オブジェクト「a」でprintSometextを呼び出すと、呼び出す関数と正しいメソッドを見つける方法がわかります。オブジェクトのサイズを出力する場合、そのメンバー変数の合計サイズ (+alignments) を出力します。そのため、メンバー関数呼び出しがどのように行われるかについての内部情報を提供してください。
ありがとう、ダイマス
c++ - vtable以外のC++仮想関数はどのように実装できますか?
重複の可能性:
C++ の仮想メカニズムに関する質問
C++で仮想メンバー関数メカニズムを実装する唯一の方法はvtableを使用していますか? 他にどのような方法がありますか?
c++ - C ++でnullポインターを介してメンバー関数を呼び出すと、プログラムがクラッシュしないのはなぜですか?
「TESTINGNULLPOINTER」として出力されます。このプログラムがクラッシュするのではなく出力を出力する理由を誰かが説明できますか?Dev C ++で確認したところ、aCCコンパイラでも同じ結果が得られました。
c++ - C++ クラス - 別のメンバー関数からメンバー関数を参照する方法
私は c++ クラスに非常に慣れていないので、これはおそらく非常に明白な質問ですが、専門用語にまだ慣れていないため、正しい検索用語を取得できないようです。
とにかく、私がやろうとしているのは、クラス内のパブリック関数が同じクラス内のプライベート関数にアクセスすることです。
例えば
c++ - constメンバー関数の説明が必要
このコードがコンパイルされて実行される理由について、私は少し混乱しています。
このコードを実行した場合の出力FFFFFFFF
も...私には予想外です。constメンバー関数にあるのでthis->b
戻るべきではありませんか?const int*
したがって、この行は、にキャストしようreturn
とするとコンパイラキャストエラーを生成するはずです。const int*
int*
明らかに、constメンバー関数が何を意味するかについての私の知識にはギャップがあります。誰かが私がそのギャップを埋めるのを手伝ってくれるなら、私は感謝します。
c++ - 有効な C++ 項目 23 メンバー関数より非メンバー非フレンド関数を優先する
クラス設計に関するいくつかの事実、具体的には関数がメンバーであるべきかどうかについて戸惑いながら、私はEffective c++を調べて、アイテム23、つまりメンバー関数よりも非メンバー非フレンド関数を優先することを見つけました。Web ブラウザーの例で最初にそれを読むと、ある程度の意味がありましたが、その例の便利な関数 (本ではこのような非メンバー関数と呼ばれます) はクラスの状態を変更しますよね?
それでは、最初の質問です。
もう少し読んで、彼は STL 関数を検討します。実際、一部のクラスで実装されていない一部の関数は stl で実装されています。
std::sort
本のアイデアに従って、それらは、std::copy
fromなどのいくつかの合理的な名前空間にパックされたいくつかの便利な関数に進化しますalgorithm
。たとえば、vector
クラスには関数がなくsort
、stlsort
関数を使用するため、ベクトル クラスのメンバーではありません。assign
しかし、メンバーとしてではなく便利な関数として実装できるように、同じ推論をベクトルクラスの他の関数に拡張することもできます。ただし、それは操作対象のソートなどのオブジェクトの内部状態も変更します。では、この微妙だが重要な (私が推測する) 問題の背後にある理論的根拠は何でしょうか。
もしあなたがその本にアクセスできるなら、これらの点をもう少し明確にしてもらえますか?
c++ - メンバー関数の相互戻り型 (C++)
C++ で、 class のオブジェクトを返すメンバー関数と、 class のオブジェクトを返すメンバー関数を持つように、A
と と呼びましょう。B
A
f
B
B
g
A
(以下のテキストは、「宿題をした」ことを示すためのものです。)
問題は、最初に定義されたクラスの関数の戻り値の型が不完全な場合に、これらの関数の署名を記述する方法です。オブジェクトは値によって返されるため、前方宣言はここでは役に立ちません。
はい、私はすべての回避策を知っています (フレンド グローバル関数、ポインターで返すなど)。ただし、上記のインターフェイスを C++ で実装できるかどうかを知りたいだけです。例として、クラスで operator() を return にオーバーロードし、クラスでA
returnにオーバーロードしようとしているとします。私は演算子をオーバーロードしているので、値で返す必要があります (まあ、動的割り当て地獄が必要でない限り:)、() はメンバー関数としてオーバーロードする必要があるため、グローバル フレンドを使用できません。B
B
A