0

Integerの「仕様」(例: 4 バイト; String: 8 バイト; ...)を知るために、プログラミング言語がクラス情報 (たとえば、Objective-C 2 バイト) を保存することが絶対に必要objectですか?
ポリモーフィズムのため、プログラムは実行時にオブジェクトが正しいtype(メソッド、メッセージに対して) 権利を持っているかどうかをチェックする必要がありますか?
これだけのリソースを消費しますか? 主な理由は、適切な構造を維持するために、ますます多くのクラスを作成するためです...

4

2 に答える 2

1

絶対に必要です。クラスのオブジェクト (参照) は RAM に保存されます。それは非常に小さな番号を使用しています。メモリアドレスのみを格納するため、f バイトです。

チェックはランタイムではなく、コンパイル中に行われます。これにより、メモリが余分に使用されることはありません。クラスやメソッドを作成してもメモリ使用量は増加しませんが、コンパイル時間が (わずかに) 増加します。データ (オブジェクト/参照、数値、文字列など) の保存にはメモリが使用されます。オブジェクトを作成する場合にのみ、言語マシンはメモリを割り当てて使用します。

于 2012-06-27T10:08:19.663 に答える
0

絶対に必要か

いいえ。

たとえば、既定では、C++ は型情報を格納しません。各オブジェクトは、仮想関数呼び出しを実装するために、関数ポインタのテーブルへのポインタを格納するだけです。

C++ では、デフォルトで、すべての型チェックがコンパイル時に行われます。dynamic_castこれは、実行時の型チェックが必要な などの「興味深い」ことを開始した場合にのみ変更され、そのため型情報がオブジェクトに格納されます。

于 2012-06-26T15:09:32.453 に答える