当我们在C++中定义一个对象时,每个对象都有自己的独立空间,如果一个类中定义了一个变量,那么每个对象都会生成一个该变量的实例。但在一些时候,我们希望它的内存空间只有一份而不是被复制多份,这就需要使用static。
1. static的基本用法
在C++中,static的主要作用是限制变量、函数或类的作用域。在函数内部使用static局部变量,就可以将其变成静态局部变量。如果使用在全局变量或类成员变量中,就可以限制其作用域在当前文件中。
以下是一个关于如何使用局部静态变量的示例:
#include <iostream>
void PrintNums()
{
static int num = 0;
std::cout << num << std::endl;
num++;
}
int main()
{
for (int i = 0; i < 10; i++)
{
PrintNums();
}
return 0;
}
在这个示例中,PrintNums
函数内部定义了一个名为num
的静态局部变量,每次调用该函数时,num
的值都会自增1,并打印输出。可以看到,这里使用的是静态变量,num
只会在第一次初始化,并且在整个程序执行期间保持存在。
2. static在类中的应用
在C++中,static还可以用来定义类的静态成员变量和静态成员函数。静态成员变量和实例成员变量的区别在于前者只会被分配一次,后者则针对每个类的实例分配一次。静态成员函数和实例成员函数的区别在于前者不会拥有this指针。
下面是一个关于如何使用类静态成员变量和静态成员函数的示例:
#include <iostream>
class MyClass
{
public:
MyClass()
{
count++;
}
static int count;
static void PrintCount()
{
std::cout << "count = " << count << std::endl;
}
};
int MyClass::count = 0;
int main()
{
MyClass p1;
MyClass p2;
MyClass::PrintCount();
return 0;
}
在这个示例中,MyClass
类中定义了一个静态成员变量count
和一个静态成员函数PrintCount
。在main
函数中,创建了两个MyClass
实例,并调用了PrintCount
函数输出了count的值。这里可以看到,在两个MyClass的实例创建过程中,静态成员变量count
会自动的被累加,最终输出的count
值为2。
以上就是关于C++中static的用法的详细讲解攻略,希望能够帮助到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C++中static的用法 - Python技术站