在为类(例如形状工厂)定义私有静态常量字符串时,您可能会遇到障碍使用 C 编译器。这是由于 C 标准施加的限制。要克服这一挑战并建立静态 const 字符串数据成员,请考虑以下解决方案:
利用 C 17 中引入的内联变量提供了方便的方法定义静态常量变量的有效方法:
class A { private: inline static const string RECTANGLE = "rectangle"; };
C 17 之前的版本需要在类外部定义静态成员并单独提供初始化器:
class A { private: static const string RECTANGLE; };
const string A::RECTANGLE = "rectangle";
需要注意的是,在类内部带有初始化器的语法类定义仅保留用于整型和枚举类型。
虽然 #define 对于定义常量来说似乎很诱人,但它引入了可能并不理想的全局可见性级别。例如,如果在头文件中定义常量,则程序的所有部分都可以全局访问该常量。这可能会导致定义相同常量的不同实现的命名冲突以及其他潜在问题。
以上是如何在 C 中定义私有静态常量字符串数据成员?的详细内容。更多信息请关注PHP中文网其他相关文章!