我认为实例变量是简单的数据类型,如 int 或 double。创建对象时自动创建的所有内容。
如果一个对象创建了额外的对象——就像它使用 NEW 关键字所做的一切——这些不是实例变量。
我是对还是错?确切的定义是什么?
我认为实例变量是简单的数据类型,如 int 或 double。创建对象时自动创建的所有内容。
如果一个对象创建了额外的对象——就像它使用 NEW 关键字所做的一切——这些不是实例变量。
我是对还是错?确切的定义是什么?
错误的。绑定在实例中的任何东西(即实例化对象)都是实例变量。与绑定到类的静态(类)变量相反。它们是简单类型还是指向对象的指针都没有关系。
实例变量是可以与类的实例相关联的变量。例如,如果您有
class A
{
private:
int m_a;
double m_b;
int* m_c;
};
如果您创建 A 的一个对象(即一个实例),则会创建一个 m_a、m_b、m_c 实例并与之关联。所以这些成为实例变量。同时,如果您在类中有一个静态变量,则静态变量实例不与该类的每个对象相关联,因此它不是实例变量。NEW 或创建堆栈对象只是创建对象的方法,因此与实例变量无关。
来自维基百科(你要求一个确切的定义):
在使用类的面向对象编程中,实例变量是在类中定义的变量,类中的每个对象都有一个单独的副本。
实例变量与类变量相反,是一种特殊类型的实例成员。
class A {
int a;
Foo *f;
static int b;
};
a
是一个实例变量。b
不是。指针f
本身就是一个实例变量,由(created with )指向的对象f
new
不是一个实例变量,因为它甚至不是一个变量,即使它仍然是实例状态的一部分。
我是 OOP 概念的新手,但我会尽力而为。
是的,实例变量是具有普通数据类型的变量,但它们属于 OBJECT 的特定实例。实例变量是描述对象的“特征”或“属性”的变量。例如,carColor、carName 可以是“Car”类的实例变量,因为它描述了对象汽车的特性。
当使用关键字“new”实例化一个新对象时,所有实例变量都会自动附加到该对象并可以单独跟踪。例如
var carA = new car
carA.carName = "Honda"
carA.carColor= "Blue"
var carB = new car
carA.carName = "Austin"
carA.carColor= "Red"
实例变量(又名字段)是属于实例的变量,而不是属于类的静态变量和属于本地堆栈框架的局部变量。
您的定义定义了一个对象,它是一种类型的实例。
这取决于对象创建它们的时间和地点。如果它们在类级别声明,但仅在实例化后创建,它们仍然是实例变量。如果它们都在函数内声明和创建,它们是局部变量,而不是实例变量。