MST

星途 面试题库

面试题:C++中类静态数据成员初始化的常规方式

在C++中,假设有一个类`MyClass`,包含一个静态整型数据成员`static int count;`,请写出在类外对`count`进行初始化的正确代码,并解释为什么要在类外初始化。
27.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在类外对count进行初始化的代码如下:

// 在源文件中进行初始化
int MyClass::count = 0; 

之所以要在类外初始化静态数据成员,原因如下:

  • 类定义的本质:类定义只是一种数据类型的描述,它规定了对象的结构和行为,但并不为对象分配实际的内存空间。静态数据成员属于类,而不是类的某个对象,其内存空间不能在类定义内部分配,因为类定义本身不涉及实际的内存分配,只是告诉编译器如何创建对象。
  • 避免重复定义:如果在类定义内部初始化静态数据成员,对于每个包含该类定义的源文件,编译器都可能会为静态数据成员分配内存,从而导致多重定义错误。在类外初始化可以确保静态数据成员只有一份实例,避免这种错误。