首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类实例成员初始化

类实例成员初始化
EN

Stack Overflow用户
提问于 2011-11-08 18:20:53
回答 2查看 1.2K关注 0票数 1

如果一个类有一个实例成员本身就是一个类,那么构造函数是否总是必须在构造函数初始化器列表中为它提供一个初始化?

在某些情况下,在我的代码中,这会导致非常长的初始化器列表,这是做事情的方式吗?我问它只是因为它看起来不优雅,但如果它是如何做的,那就没问题。

常量实例成员变量也是这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-08 18:30:32

对于对象,您必须初始化所有没有默认构造函数的成员。如果在初始化列表中省略了一个成员,将使用它的默认构造函数(或者它的值对于基元类型是未定义的)。

对于原语类型 (intpointers),不初始化它们是合法的,但它们的值将是未定义的

最后,必须初始化对其他对象的引用 (std::string&)。

有关详细信息,请参阅this answer

另外,我想指出的是,如果你的类有很多成员,这可能是你应该将它分成几个较小的类的迹象。最佳实践是让类只有一个职责(参见single responsibility principle)。

票数 1
EN

Stack Overflow用户

发布于 2011-11-08 18:23:20

如果你有一个默认的构造函数(没有参数),那么你不需要显式地初始化它。

对于常量实例,默认初始化是没有意义的,不是吗?因此,拥有它们是没有任何意义的,除非你有一些东西可以用来初始化它们。(但这当然是可能的,如果出于任何原因,这就是您正在做的事情)。

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

https://stackoverflow.com/questions/8048913

复制
相关文章

相似问题

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