C++学习——类当中static关键字的作用
一、类和对象
我们知道类是“行为”和“属性”的集合,我们可以通过类来实例化对象,从而定义对象的“行为”和“属性”。比如:
class Car
{
String brand;
String license;
String color;
}
Car Toyota;
这里定义了“Car”的类,通过“Car”这个类实例化了“Toyota”。那么类当中的所有属性都是Toyota的。
二、static关键字的作用
class Car
{
public:
String brand;
String license;
String color;
static int totalCars; //静态变量,所有对象共享
}
Car Toyota;
Car Benz;
这里我实例化了2个对象,分别是“Toyota”和“Benz”,他们共同都拥有上述的三个属性(变量)“brand”、“license”、“color”,只是共享属性的定义。
不过我有定义了静态变量“totalCars”,这个变量是所有实例所共有的,即所有实例之间不仅共享“totalCars”的定义,还共享它的值。
class Car
{
public:
String brand;
String license;
String color;
static int totalCars; // 静态变量,所有对象共享
};
int Car::totalCars = 0;
int main()
{
Car Toyota;
Car Benz;
Benz.totalCars ++;
Toyota.totalCars ++;
cout << "Total cars: " << Car::totalCars << endl; // 输出: Total cars: 2
return 0;
}
这里对2个对象的属性“totalCars”进行自增,再对其进行输出,结果为2。
证实了前面的说法。
需要注意的是,在类当中对变量进行静态声明只是告诉编译器这个类当中有一个静态变量,需要进行值的共享,此时并不会在实际的程序当中开辟内存空间。
只有类的外部对静态变量进行定义、初始化,此时才是正式对该变量开辟内存控件。