【发布时间】:2008-10-15 14:42:33
【问题描述】:
如果您想将某个常量值与一个类相关联,这里有两种方法可以实现相同的目标:
class Foo
{
public:
static const size_t Life = 42;
};
class Bar
{
public:
enum {Life = 42};
};
从客户的角度来看,它们在句法和语义上似乎是相同的:
size_t fooLife = Foo::Life;
size_t barLife = Bar::Life;
除了纯粹的风格问题之外,还有什么理由比另一种更受欢迎吗?
【问题讨论】:
-
现在,与
static const相比,C++11 的static constexpr更好,因为它强制编译器必须能够在编译时解析值,这表明意图并可能避免意外。这也可能有助于以后的优化,但我不保证这种猜测! -
@alfC ...和?我没有说不是,因为我不是在谈论
enums。
标签: c++ class-design