在C++中,你通常不能在头文件中直接给类的成员变量赋值,因为这会导致每个包含该头文件的源文件中都尝试进行赋值,从而引发多重定义错误。然而,你可以在类的构造函数中初始化成员变量,或者在类声明中使用初始化列表或默认成员初始化器来给成员变量设定默认值。
下面是一些示例来说明如何在类定义中初始化成员变量:
使用默认成员初始化器(C++11及以后版本):
class MyClass { | |
public: | |
int myVar = 10; // C++11开始支持在类定义中直接初始化成员变量 | |
}; |
使用构造函数的初始化列表:
class MyClass { | |
public: | |
int myVar; | |
MyClass() : myVar(10) { // 在构造函数的初始化列表中赋值 | |
// 构造函数体 | |
} | |
}; |
在类的实现(.cpp文件)中,你也可以在构造函数体内对成员变量进行赋值,但通常推荐使用初始化列表,因为它更高效:
MyClass::MyClass() { | |
myVar = 10; // 在构造函数体内赋值 | |
} |
直接在头文件中给成员变量赋值(除了使用默认成员初始化器)是不合适的,因为头文件通常会被多个源文件包含。如果头文件中包含可执行代码(如赋值操作),这会导致每个包含该头文件的源文件都包含这段代码,从而可能引发链接错误,因为链接器会发现多个定义。
总之,你应该避免在头文件中直接写赋值语句,而是使用构造函数、初始化列表或默认成员初始化器来初始化成员变量。