gpt4 book ai didi

c++ - 为什么一个非常量静态成员会有多个定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:05 26 4
gpt4 key购买 nike

C++ 强制程序员在类外定义一个非常量静态成员,我一直看到的原因是如果静态成员是在类内定义的,这将导致静态成员的多个定义。我明白有静态成员的多个定义是不好的,但我不明白这些多个定义在哪里定义甚至会来自。不应该是一个初始化的非常量静态成员只是进入数据部分,这是唯一的定义?

struct Student {

static int x = 4; // Why would this result in multiple definitions?

};

此外,我在另一篇 stackoverflow 帖子中读到,const static 成员在使用它的任何地方都被简单地内联到代码中: Why can't I have a non-integral static const member in a class?是否由预处理器与所有其他指令一起处理? (如果需要,我会在另一篇文章中问这个问题,但我不确定它是否值得一个单独的帖子)。

最佳答案

这会发生,因为/当您的 header 包含在多个“翻译单元”(想想 .cpp 文件)中时。

每个 TU 将包含一份定义。

在链接时,它们会发生冲突。 (链接器链接来自每个翻译单元的对象)

关于c++ - 为什么一个非常量静态成员会有多个定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949400/

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