首页 >后端开发 >C++ >为什么在 C 中使用静态类成员时会出现'未定义的引用”?

为什么在 C 中使用静态类成员时会出现'未定义的引用”?

Patricia Arquette
Patricia Arquette原创
2024-12-11 03:07:08745浏览

Why Do I Get

对静态类成员的未定义引用

在 C 中,类中定义的静态成员需要正确处理以避免编译错误。

未定义的原因引用

静态成员尽管在类定义中声明,但不会自动定义,除非在其他地方显式完成。这是因为声明与 C 中的定义不同。声明仅引入成员,而定义分配内存并提供初始值。

示例

考虑以下带有未声明静态成员的类:

class Example {
    static bool exampleStaticMember;
};

尝试使用 exampleStaticMember 而不定义它会导致“未定义的引用”错误。

定义要求

要解决此问题,必须显式定义静态成员,通常在包含类定义的源文件 (.cpp) 中。该定义只是再次声明该成员的数据类型和分号 (';')。

bool Example::exampleStaticMember;

特殊情况

  • Const积分/枚举静态成员: 这些可以在类定义中初始化
  • 静态模板成员:类模板的静态成员需要在头文件中定义。

其他静态用法

请注意,static 关键字在应用于外部时具有不同的含义类:

  • 函数中的静态对象:声明一个在函数调用之间保留其值的对象。
  • 命名空间范围中的静态对象/函数: 声明具有内部链接的对象/函数。

以上是为什么在 C 中使用静态类成员时会出现'未定义的引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn