4

インスタンス変数は int や double などの単純なデータ型だと思います。オブジェクトの作成時に自動的に作成されるすべてのもの。

オブジェクトが追加のオブジェクトを作成する場合 (NEW キーワードで行われるすべてのことと同様)、これらはインスタンス変数ではありません。

私は正しいですか、それとも間違っていますか?正確な定義は何ですか?

4

7 に答える 7

19

違う。インスタンス内でバインドされているもの (インスタンス化されたオブジェクト) はすべてインスタンス変数です。クラスにバインドされている静的 (クラス) 変数の反対。それらが単純な型であるか、オブジェクトへのポインターであるかは問題ではありません。

于 2009-04-13T12:04:24.903 に答える
6

インスタンス変数は、クラスのインスタンスに関連付けることができる変数です。たとえば、

class A
{
private:
int m_a;
double m_b;
int* m_c;
};

また、A のオブジェクト (インスタンス) を作成すると、m_a、m_b、m_c の 1 つのインスタンスが作成され、それに関連付けられます。したがって、これらはインスタンス変数になります。同時に、クラス内に静的変数がある場合、静的変数のインスタンスはクラスの各オブジェクトに関連付けられていないため、インスタンス変数ではありません。NEW またはスタック オブジェクトの作成は、オブジェクトを作成する方法にすぎず、インスタンス変数とは関係ありません。

于 2009-04-13T12:07:59.997 に答える
5

ウィキペディアから(正確な定義を求めました):

クラスを使用したオブジェクト指向プログラミングでは、インスタンス変数はクラスで定義された変数であり、クラス内の各オブジェクトには個別のコピーがあります。

インスタンス変数は、クラス変数の反対であり、特別なタイプのインスタンス メンバーです。

于 2009-04-13T12:07:13.150 に答える
1

インスタンス変数 (別名フィールド) は、クラスに属する静的変数やローカル スタック フレームに属するローカル変数とは対照的に、インスタンスに属する変数です。

あなたの定義は、型のインスタンスであるオブジェクトを定義します。

于 2009-04-13T12:06:39.830 に答える
0

それは、オブジェクトがそれらをいつどこで作成するかによって異なります。それらがクラス レベルで宣言されていても、インスタンス化後にのみ作成された場合、それらは依然としてインスタンス変数です。それらが関数内で宣言および作成されている場合、それらはローカル変数であり、インスタンス変数ではありません。

于 2009-04-13T12:06:15.120 に答える