gpt4 book ai didi

c++ - 类作用域常量 : const vs static const

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:37 25 4
gpt4 key购买 nike

对于类的常量,我应该使用类作用域静态常量,还是文件作用域常量?

例如:

// .h
class C {
private:
static const int some_constant_c;
}

// .cc
const C::some_constant_c = 10;

对比

// .h
class C {
}

// .cc
const some_constant_c = 10;

对我来说,前者有更好的语义含义,即常量属于某个类,但后者的优点是不将常量暴露给头文件。

==============

关于此的一个后续问题:

如果我想让子类访问我的常量怎么办。将 static const 放在 protected 中有意义吗?示例如下:

// .h
class C {
protected:
static const int some_constant_c;
}

最佳答案

当然,这是个人喜好问题。尽量不在头文件中公开类内部结构是一艘在 C++ 中航行的船……在成员变量和私有(private)成员函数之间,将实现细节保留在头文件之外是不切实际的(除非您使用pImpl 习语)。

如果您只想隐藏常量的,请注意您可以将初始化程序放在源文件中。

如果您确实在源文件中将常量实现为全局变量,请使用匿名命名空间来防止它们引起链接器冲突。

关于c++ - 类作用域常量 : const vs static const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684398/

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