我遇到了一个日志记录机制的代码,其中根据严重性打印消息。 因此,如果严重性设置为 0,则打印 DEBUG 日志,如果设置为 1000,则仅打印 INFO 日志等。
class Logs
{
public:
static const int DEBUG=0;
static const int INFO=1000;
static const int SOMETHING_ELSE=2000;
}
类里面就是这样。没有其他的。
并且不是按原样使用值,而是使用变量。
示例:如果我想将严重性传递给某个辅助函数,那么它传递 Logs::INFO.
我的问题是,为什么我们真的需要一个类来定义这些常量变量。 我们也可以使用枚举。或宏。或者 const 全局变量。或命名空间内的 const 变量。但为什么要上课?与我提到的其他选项相比,使用类有什么优势吗?
是否只是选择使用一个而不是另一个的问题,还是一个比其他有具体优势?
最佳答案
We could have used
enum
s as well.
那将是我的第一选择,一个定义在 Log
范围内的 enum
。
Or Macros.
绝对不是。由于许多原因,宏不如整数变量。
Or const global variables.
没有宏那么糟糕,但它们不应该是首选。
Or const variables inside namespaces.
这也是一种可能性。即使在这里,我也建议使用 enum
。
But why classes?
在类范围或命名空间
范围内定义的枚举
或整数常量之间的选择对我来说并不总是很清楚。你必须根据这些数字代表什么来做出判断。在这种情况下,我觉得可以使用:
class Logs
{
public:
enum MessageType {DEBUG=0, INFO=1000, SOMETHING_ELSE=2000};
}
关于c++ - 使用类来维护几个常量变量是个好主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169078/