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