在 C 类中初始化静态字符串
在类中声明成员函数和变量时,作用域和可访问性成为重要的考虑因素。如果您遇到某些成员函数不直接访问类对象并且您决定将它们设为静态的情况,您可能还需要修改它们访问的变量的声明。
问题:初始化静态字符串变量
如果你有像下面这样的字符串变量class:
string RE_ANY = "([^\n]*)"; string RE_ANY_RELUCTANT = "([^\n]*?)";
将它们设为静态 const 变量可确保它们保持不变,但可能会导致初始化问题。编译器可能会抱怨静态常量整型变量只能在类内初始化。
解决方案:外部初始化
作为解决方法,您可以初始化这些静态字符串变量在源文件中的类之外。例如:
// Within the class class Thing { static string RE_ANY; static string RE_ANY_RELUCTANT; }; // In a source file string Thing::RE_ANY = "([^\n]*)"; string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";
注意:区分静态函数和常量函数
值得注意的是,不应将访问这些字符串的成员函数设为静态,因为它们仍然需要访问类成员。相反,请考虑将它们设为 const 函数,这样可以防止它们修改类成员。这维护了函数和类对象之间所需的关联,同时确保不变性。
以上是如何正确初始化 C 类中的静态字符串变量?的详细内容。更多信息请关注PHP中文网其他相关文章!