您的位置:首页 > 汽车 > 时评 > c++ 可以再头文件种直接给成员变量赋值吗

c++ 可以再头文件种直接给成员变量赋值吗

2024/10/5 20:31:52 来源:https://blog.csdn.net/xie__jin__cheng/article/details/140230433  浏览:    关键词:c++ 可以再头文件种直接给成员变量赋值吗

在C++中,你通常不能在头文件中直接给类的成员变量赋值,因为这会导致每个包含该头文件的源文件中都尝试进行赋值,从而引发多重定义错误。然而,你可以在类的构造函数中初始化成员变量,或者在类声明中使用初始化列表或默认成员初始化器来给成员变量设定默认值。

下面是一些示例来说明如何在类定义中初始化成员变量:

使用默认成员初始化器(C++11及以后版本):

class MyClass {
public:
int myVar = 10; // C++11开始支持在类定义中直接初始化成员变量
};

使用构造函数的初始化列表:

class MyClass {
public:
int myVar;
MyClass() : myVar(10) { // 在构造函数的初始化列表中赋值
// 构造函数体
}
};

在类的实现(.cpp文件)中,你也可以在构造函数体内对成员变量进行赋值,但通常推荐使用初始化列表,因为它更高效:

MyClass::MyClass() {
myVar = 10; // 在构造函数体内赋值
}

直接在头文件中给成员变量赋值(除了使用默认成员初始化器)是不合适的,因为头文件通常会被多个源文件包含。如果头文件中包含可执行代码(如赋值操作),这会导致每个包含该头文件的源文件都包含这段代码,从而可能引发链接错误,因为链接器会发现多个定义。

总之,你应该避免在头文件中直接写赋值语句,而是使用构造函数、初始化列表或默认成员初始化器来初始化成员变量。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com