gpt4 book ai didi

c++ - 如果在其他地方声明为 const,为什么必须在定义时重复 const 说明符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:24 24 4
gpt4 key购买 nike

解决后this simple issue ,我不得不问:

-> 在类 ex 的 H 文件中定义了一个常量静态成员,例如:

class ex {
const static int my_ex;
};

->在CPP文件中指定了值

ex::my_ex = 32;  

然后出现“声明冲突”错误(以及“未命名类型”)。我知道 CPP 文件中的 definition 也是一个 declaration 从链接器来看它确实会产生冲突但是为什么只有 const 说明符(和类型)而不是 static 一个?我只需要写

const int ex::my_ex = 32;

让它编译。但不是静态的……为什么不呢?为什么我不能只定义而不重复声明相关步骤(类型、特定标识符)?

最佳答案

这是历史的事情。

从 C 开始,定义上的 static 表示“内部链接”。当 C++ 出现并向其添加类时,Bjarne 需要一个关键字来表示静态成员。不想添加新的关键字(这种偏好至今仍然存在),他重新使用了 static

现在 static 意味着两种不同的东西,这取决于你把它放在哪里。所以你不能在这里写static,因为它会有别的意思。因此,该语言不需要您这样做,因为那样做很愚蠢。

除此之外,就是。当你创建一种语言时,你会在规范的简单性、实现的简单性和使用的简单性之间取得平衡,然后你会想出一套语言规则。在某些时候,您必须停止为“为什么”创建一些无关紧要的规则而争论不休,而只是继续编写您的程序。

关于c++ - 如果在其他地方声明为 const,为什么必须在定义时重复 const 说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36697711/

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