实例变量的确切定义是什么?

时间:2009-04-13 12:02:00

标签: c++ class instance-variables

我认为实例变量是简单的数据类型,如int或double。创建对象时自动创建的所有内容。

如果一个对象创建了其他对象 - 就像使用NEW关键字完成的所有对象一样 - 这些对象不是实例变量。

我是对还是错? 确切的定义是什么?

7 个答案:

答案 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)

这取决于对象创建它们的时间和位置。如果它们在类级别声明,但仅在实例化后创建,则它们仍然是实例变量。如果它们都是在函数内声明和创建的,则它们是局部变量,而不是实例变量。