如果这是一个c++问题,并且它提到#define作为替代,那么它是关于“全局”(即文件范围)常量,而不是关于类成员。当涉及到c++中的这些常量时,static const是多余的。在c++中,const默认有内部链接,没有必要将它们声明为static。所以它实际上是关于const vs. #define。
缺点是,给定#define X "x"和一些客户端使用"pre" X "post",如果你想或需要使X成为一个运行时可更改的变量,而不是一个常量,你强制编辑客户端代码(而不是仅仅重新编译),而从const char*或const std::string转换更容易,因为它们已经强制用户合并连接操作(例如"pre" + X + "post"用于string)。