static
使用位置
在类或结构体中时:
在这个类的所有实例中,这个变量只有一个实例(就是说所有类实例都共享这个变量的值,这个变量的值一改变,所有类中的这个变量的值都改变)
例子:如果我们定义了一个类叫people,这个类中有一个变量是satic int x,之后我们在主函数中声明两个people实例p1,p2。如果我们想改变x的值,直接写people::x=5即可,不用把实例名带上。
class Player
{
public:
static int age;
static void print()
{
std::cout << age << std::endl;
}
};
int Player::age;//在实体定义静态变量 哪些是这些静态变量的作用域 然后是变量的名称
int main()
{
Player player;
player.age = 9;//正确调用静态变量的方法应该是Player::age
player.print();//正确调用静态方法是Player::print()
注意 静态方法不能访问非静态变量 因为静态方法没有类实例
每个静态方法都是通过获取当前类的一个实例作为参数,类中是看不到这个数的
static void print(Player e)
{
std::cout << e.age << std::endl;
}//这是非静态方法工作的过程
static void print()
{
std::cout << e.age << std::endl;
}//这是静态方法访问非静态变量的过程
static在类和结构体外使用时:
限定被修饰的变量只能在本c++文件中使用
尽量使用静态变量 能够节省工作开销 因为不用和其他文件进行链接