使用以下(A)的(dis)优势是什么:
// .h
class SomeClass
{
static const struct ConstantGroup
{
int a = 1;
string b = "b";
// ... etc.
} CONSTANT;
};
// .cpp
const SomeClass::ConstantGroup SomeClass::CONSTANT;
Run Code Online (Sandbox Code Playgroud)
与(B):
// .h
class SomeClass
{
static const int A;
static const string B;
// .. etc.
};
// .cpp
const int SomeClass::A = 1;
const string SomeClass::B = "b";
Run Code Online (Sandbox Code Playgroud)
...对于某些相关静态类常量的组?假设不涉及模板,并且常量包含简单类型(POD或字符串).
到目前为止,我看到有利于(A)的以下优点:
static const auto & SHORTHAND = SomeClass::LONG_NAME_FOR_CONSTANTS;使用此模式时,要记住哪些缺点,问题或其他因素?
(A)通过从最终可执行文件中删除不必要的变量来进行优化可能更难.
如果要对常量进行分组,请考虑使用a namespace来实现此目的.
namespace ConstantGroup
{
constexpr int a = 1;
// Here best solution might depend on usage and c++ version
const std::string b;
}
Run Code Online (Sandbox Code Playgroud)
将常量作为一个组传递真的没有多大意义.如果某些东西确实是恒定的,那么你需要一个单一的定义并且总是使用它.
此外,如果常量非常特定于一个类,则将其设为该类的(静态)成员.
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |