-
非成员函数中
1、当变量声明为static时,空间将在程序的生命周期内分配,其被存放在在全局数据区。即使多次调用该函数,静态变量的空间也只分配一次,前一次调用中的变量值通过下一次函数调用传递。
2、静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放。#include <iostream> #include <string> using namespace std; void demo() { static int count = 0; // 静态变量 cout << count << " "; count++; } int main() { for (int i=0; i<5; i++) demo(); //0、1、2、3、4 return 0; }
-
类中的静态变量
1、声明为static的变量只被初始化一次,由对象共享,静态变量不能使用构造函数初始化
2、类中的静态成员变量必须在类内声明,在类外定义,不用加static(被const修饰的除外)class TEST { public: static int i; // 类内声明 TEST() { // Do nothing }; }; int TEST::i = 1; // 类内定义 class TEST { public: // 被const修饰的static变量在c++11中可以在类内被直接初始化。 static const int i=10; TEST() { // Do nothing }; };
-
类中的静态成员函数
1、静态成员函数也不依赖于类的对象。我们被允许使用对象和’.'来调用静态成员函数。但建议使用类名和范围解析运算符调用静态成员;
2、静态成员函数仅能访问静态数据成员或其他静态成员函数,它们无法访问类的非静态数据成员或成员函数;
3、静态成员函数不接受隐含的 this 自变量。所以,它就无法访问自己类的非静态成员;
4、静态成员函数访问普通成员变量的方法,总结:通过传入对象,代替this指针;
5、非静态可以直接访问静态成员。 -
静态类
和变量一样,静态类的生命周期直到程序的结束。在main结束后才会调用静态类的析构函数。
C++ static
最新推荐文章于 2024-11-09 13:08:09 发布