解释
类的静态成员变量内存不属于实例化的类,在类内只起到申明的作用。 必须要在类外进行初始化,这个说法不严谨,类外主要是进行定义,分配内存,同时也可以赋初始值;
代码例子
test.h
#pragma once
#include <iostream>
class Test
{
public:
void get_static_private_value();
static int static_public_value;
private:
static int static_private_value;
};
test.cpp
#include "test.h"
int Test::static_private_value;
int Test::static_public_value;
void Test::get_static_private_value() {
std::cout << Test::static_private_value << std::endl;
};
main.cpp
#include "test.h"
int main()
{
Test test;
test.get_static_private_value();
std::cout << Test::static_public_value << std::endl;
return 0;
}
运行结果
0
0
ps
- private static 和 public static 都是静态变量,在类加载时就定义,不需要创建对象
- private static 是私有的,不能在外部访问,只能通过静态方法调用,这样可以防止对变量的修改
- static 成员函数只能访问static成员变量,非static成员函数可以访问static成员变量
|