我认为实例变量是简单的数据类型,如int或double。创建对象时自动创建的所有内容。
如果一个对象创建了其他对象 - 就像使用NEW关键字完成的所有对象一样 - 这些对象不是实例变量。
我是对还是错? 确切的定义是什么?
答案 0 :(得分:18)
错误。在实例中绑定的任何内容(即实例化对象)都是实例变量。与静态(类)变量相反,它们绑定到类。它们是简单类型还是指向对象的指针并不重要。
答案 1 :(得分:6)
实例变量是可以与类的实例相关联的变量。例如,如果你有
class A
{
private:
int m_a;
double m_b;
int* m_c;
};
如果您创建A的对象(即实例),则创建m_a,m_b,m_c的一个实例并将其与之关联。所以这些变成了实例变量。同时,如果类中有静态变量,则静态变量实例不与类的每个对象相关联,因此它不是实例变量。新建或创建堆栈对象只是创建对象的方式,因此与实例变量无关。
答案 2 :(得分:5)
来自Wikipedia(您要求确切的定义):
在使用类的面向对象编程中,实例变量是在类中定义的变量,类中的每个对象都有一个单独的副本。
实例变量恰恰相反 类变量,它是一个特殊的 实例成员的类型。
答案 3 :(得分:2)
我是OOP概念的新手,但我会尽我所能。
是,实例变量是具有正常数据类型的变量,但它们属于OBJECT的特定实例。实例变量是描述对象的“特征”或“属性”的变量。例如carColor,carName可以是类“Car”的实例变量,因为它描述了对象车的特征。
当使用关键字“new”实例化新对象时,所有实例变量都会自动附加到对象,并且可以单独跟踪。例如
var carA =新车 carA.carName =“本田” carA.carColor =“蓝色”
var carB =新车 carA.carName =“奥斯汀” carA.carColor =“红色”
答案 4 :(得分:1)
实例变量(aka。fields)是属于实例的变量,而不是属于类的静态变量属于本地堆栈框架的局部变量。
您的定义定义了一个对象,它是一个类型的实例。
答案 5 :(得分:1)
class A {
int a;
Foo *f;
static int b;
};
a
是一个实例变量。 b
不是。指针f
本身就是一个实例变量,f
指向的对象(用new
创建)不是实例变量,因为它甚至不是变量,即使它仍然是实例状态的一部分。
答案 6 :(得分:0)
这取决于对象创建它们的时间和位置。如果它们在类级别声明,但仅在实例化后创建,则它们仍然是实例变量。如果它们都是在函数内声明和创建的,则它们是局部变量,而不是实例变量。