static修饰的成员变量及函数

2023-10-20 16:38:34 浏览数 (3)

static成员变量又称为静态成员变量,在多个对象间共享使用,并且static静态变量在初始化时必须在类外初始化,可以直接通过“类名::变量”访问,哪怕是还没有生成对象时一样可以访问,以此看来static成员变量不隶属于某个对象,而隶属于类,只是所有该类的对象都可以使用而已。

另外,静态的成员函数不在于多个对象之间的信息共享,而是在于管理类内的static数据成员,完成对static数据成员的封装。 示例图:

代码语言:javascript复制
#include 
 
using namespace std;
 
class CStatic
{
public:
CStatic(int l, int w)
{
length = l;
width  = w;
}
static void set_height()
{
// 静态函数操作静态成员,静态函数没有this指针
height = 20;
}
int show_box()
{
return length * width * height;
}
private:
int length;
int width;
static int height;
};
 
// 在类外初始化
int CStatic::height = 0;
 
int main(int argc, char* argv[])
{
CStatic s1(2, 5);
CStatic s2(3, 9);;
 
// s1 对象修改了共享的 height 的值
// s2 对象中 height 的值也同时被修改了
s1.set_height();
cout << s1.show_box() << endl;
cout << s2.show_box() << endl;
 
getchar();
return 0;

}

1 人点赞