C++之
static 关键字
C++中的关键字 static ,顾名思义表示静止、静态。
1. 作用于函数内部的局部变量
局部作用域静态变量的特点:当一个函数返回后,下一次再调用时,该变量还会保持上次的值,函数内部的静态变量只开辟一次空间,且不会因为多次调用产生副本,也不会因为函数返回而失效。
注意:
- 普通局部变量如果未赋予初值,编译器会报错;
- 当局部变量加上
static 后,定义时如果未赋予初值,则会默认初始化为 0
2. 作用于类的成员
解决同一个类的不同对象之间数据和函数共享问题
2.1 作用于类的数据成员
静态成员在每一个类中只有一个副本,由该类所有对象共同维护和使用,从而实现同一个类的不同对象的数据共享。需要注意:
- 使用
类名 ::标识符 的方式访问静态数据成员,因为静态数据成员不属于任何一个对象 - 对静态数据成员初始化,在类定义外进行,以这种方式专门为他们分配空间。如果直接在类内定义静态数据成员,编译器则会报错
2.2 作用于类的函数成员
静态成员函数就是使用 static 关键字声明的函数成员,同静态数据成员一样,静态成员函数也属于整个类,由该类所有对象共同拥有,为所有对象共享
(1)静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态数据成员。如果访问非静态成员,要通过对象来访问。
class Person {
public:
static void findPerson(Person person);
private:
int age;
static int sex;
};
void Person::findPerson(Person person)
{
cout << age; // 对 age 的引用是错误的
cout << person.age; // 正确
cout << sex; //对 sex 的引用是正确的的,引用静态数据成员
}
(2)在类外使用j静态成员函数
- 使用
类名 :: 函数名 操作符来调用静态成员函数 - 使用
类.函数名 调用
|