gpt4 book ai didi

c++ - header 中的 private static const 成员变量与 cpp 中的 const 变量

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

为什么我应该在 header 中声明一个私有(private)的 static const 变量(并在 cpp 中初始化它)而不是仅仅在 cpp 中定义 + 声明它?


案例1.h

class MyClass
{
...
private:
static const MyType some_constant;
}

case1.cpp

const MyType MyClass::some_constant = ...;

案例2.h

//No mention of some_constant at all

案例2.cpp

const MyType some_constant = ...;

假设遵循常见的 c++ 约定(1 个 header 和 cpp 仅与 1 个类相关联,从不与 #include .cpp 文件相关联),在这两种情况下,变量都是类私有(private)的,两者都是在调用构造函数之前初始化,都提供了作为“静态类局部常量”的功能。

以上两种做法有什么区别吗? (哪个更好)?

最佳答案

因为它是一个private成员,所以只有类的实现才能访问它。

因此,为了避免不必要地污染您的类定义,我倾向于采用第二种方法。

您可以更进一步,在匿名命名空间中定义它:

namespace {
const MyType some_constant = ...;
}

那样的话,它肯定会本地化到一个翻译单元。但是请注意,您使用 const 意味着 internal linkage默认。 (如果没有 const,其他人可以使用 extern 访问该变量)

关于c++ - header 中的 private static const 成员变量与 cpp 中的 const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46579953/

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