gpt4 book ai didi

c++ - main 中静态类变量的初始化

转载 作者:可可西里 更新时间:2023-11-01 18:19:18 25 4
gpt4 key购买 nike

我在类中有一个静态变量。我正在全局范围内初始化它,它工作正常。

但是当我尝试在主链接器中初始化时抛出错误。为什么会这样。

class Myclass{

static int iCount;
} ;

int main(){

int Myclass::iCount=1;

}

并且在全局范围内为什么我必须指定变量类型喜欢

int Myclass::iCount=1;

在我的类里面,我将 iCount 定义为整数类型,为什么不呢。

   Myclass::iCount =1 ; in //Global scope

最佳答案

C++ 标准的 $9.4.2/7 部分说,

Static data members are initialized and destroyed exactly like non-local objects (3.6.2, 3.6.3).

请注意短语“已初始化”“完全像非本地对象”。希望这能解释为什么你不能那样做。

其实静态成员更像是通过Myclass::iCount访问的全局对象。因此,您必须在全局范围(定义类的相同范围)初始化它们,如下所示:

class Myclass{

static int iCount;
} ;
int Myclass::iCount=1;

int main(){
/*** use Myclass::iCount here ****/
}

相似主题:

How do static member variables affect object size?

关于c++ - main 中静态类变量的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com