これは基本的なものでなければならないと思いますが、それを検索するには良いキーワードが見つかりません。より多くのオブジェクトをインスタンス化すると、メンバー関数のインスタンス化が増えますか?
同じメンバ関数がますますインスタンス化されると、関数をマネージャクラスに移動する方がメモリ的には良いでしょうか?
これは基本的なものでなければならないと思いますが、それを検索するには良いキーワードが見つかりません。より多くのオブジェクトをインスタンス化すると、メンバー関数のインスタンス化が増えますか?
同じメンバ関数がますますインスタンス化されると、関数をマネージャクラスに移動する方がメモリ的には良いでしょうか?
オブジェクトのインスタンス化は、オブジェクトの非静的データメンバーにのみ割り当てられ、メンバ関数には割り当てられません。
クラスのオブジェクトが2つある場合は、クラスのメンバ関数のコピーが2つあることを意味するのではなく、thisポインターが非静的メンバー関数に渡され、どのオブジェクトがメンバ関数を呼び出します。
静的メンバー関数はどうなるのですか?彼らは静かに名前空間のグローバル関数として実装されるのですか? – Sgene9
いいえ、クラスの静的メンバー関数、つまり 'MyClass :: aStaticMemberFunction()'にアクセスするには、クラスまたはオブジェクトの名前を使用する必要があります。ちょうど 'this'ポインタは静的メンバー関数に渡されません。 –
いいえ非現実的なメンバ関数に 'this'パラメータを引数として渡しても目に見えない(つまりあなたに)共通の実装テクニックです - インスタンス化されたオブジェクトごとにコードは生成されません(いくつかのサンクは除外されます)。 – Niall
@Niallより包括的なQ&Aへのリンクをありがとう。あなたは静的メンバー関数に何が起こるか知っていますか?彼らは静かに名前空間のグローバル関数として実装されるのですか? – Sgene9
他の関数と同じようなものですが、目に見えない「this」は得られず、コンパイラはスコープ/可視性とアクセスを処理します。 – Niall