首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造函数必须在C++中初始化成员变量吗?

构造函数必须在C++中初始化成员变量吗?
EN

Stack Overflow用户
提问于 2018-01-20 11:12:19
回答 4查看 1.3K关注 0票数 1

我已经了解到,构造函数用于初始化C++中类的成员变量。在所有示例中,我已经看到构造函数在调用类时初始化类的所有成员变量。

如果我编写的构造函数只初始化部分成员变量或不初始化成员变量,会发生什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-20 11:17:47

这取决于您拥有哪些成员变量。如果您提供了一个构造函数,并且没有显式地初始化成员初始化列表中的变量,那么它将是http://en.cppreference.com/w/cpp/language/default_initialization。这是针对每个变量的。

现在,默认初始化会根据您拥有的变量执行其他一些操作。如果您有一个内置类型,如intbool,那么它将不会初始化为0或任何其他值,就像您有:

代码语言:javascript
复制
int value; // it has an indeterminate value

这也适用于数组。如果它是另一个类,那么将调用该类的默认构造函数,就像您有:

代码语言:javascript
复制
struct Foo { /*something*/ };
Foo value; // calls default constructor, i.e. initializes object
票数 5
EN

Stack Overflow用户

发布于 2018-01-20 11:19:15

很好..。还可以在成员函数中初始化成员变量,然后,只需在构造函数中调用该函数。重要的是不要忘记在使用变量之前初始化它们。

总之..。在构造函数中不初始化成员变量是很好的,只要在使用它们之前先在类中的某个地方初始化它们。

票数 2
EN

Stack Overflow用户

发布于 2018-01-20 11:15:04

你被允许这么做。但这并不是很好的实践,因为您将有一系列未初始化的成员变量,这些变量可能会产生意想不到的结果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48355424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档