每当我们有一个带有静态成员变量的类时,为什么我们需要对其进行定义?
为什么我们不能直接使用它?
我想看看如果不定义静态变量,是否会分配任何内存空间,所以我写了这段小代码,看来确实为该变量分配了内存。
#include <iostream>
using namespace std;
class A
{
public:
int a;
static int b;
};
// int A::b = 1;
int main()
{
cout<<sizeof(A::b);
return 0;
}
输出:
4
现在,我定义了变量并对其进行了初始化(未注释int A :: b = 1;行),并运行了相同的代码,即使这次输出是相同的。
那么,定义它的目的是什么?
对于静态数据成员,您必须在实现中为其分配内存,您现在所做的并不分配内存,而只是获得的大小int
。在C ++ 17中,您可以声明内联静态变量,因为int
其默认值为零,但您可以设置任何所需的值。像这样:
static inline int b=4;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句