gpt4 book ai didi

c++ - 为什么总是需要 "int ClassName::VariableName "来完成联动?

转载 作者:行者123 更新时间:2023-11-28 03:52:30 24 4
gpt4 key购买 nike

  class X {
static int i;
// some other function, variable declaration, cons, dest
};

int X :: i ; **(!)**

为什么我必须总是写那 (!) 行?

如果我不写,编译器将无法完成内部链接,因此它会给出(我假设)链接器错误。为什么?

最佳答案

这称为单一定义规则。每个全局对象(从技术上讲,每个具有外部链接的对象)都必须在一个源文件中(从技术上讲,在一个翻译单元中)定义。但是,您可以声明多次。

通常,类定义将位于头文件中,许多源文件可能包含该头文件。所以任何静态成员都不能在那里定义,只能声明,否则会出现多次定义。您必须在一个源文件中单独定义静态成员,以便链接器找到一个定义。这就是标记为 (!) 的行所做的。

关于c++ - 为什么总是需要 "int ClassName::VariableName "来完成联动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4957189/

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