C++ 如何正确初始化包含许多数据成员的类?

C++ 如何正确初始化包含许多数据成员的类?,c++,C++,假设一个类包含大约10个数据成员,那么初始化该特定类的对象的正确方法是什么?创建一个包含10个参数的构造函数,或者只提供一个默认构造函数,然后使用setter成员函数或其他什么? 基本上我想知道它是如何在实际代码中实现的? 谢谢。在实际的代码中,如果有一个包含10个需要设置的参数的类,我会非常沉默 但在现实生活中,我知道这种情况比我想象的要频繁得多。下面是我要做的: 首先,评估你的设计。你真的需要这些东西吗 第二,如果您确实需要所有这些东西,或者由于遗留设计而没有出路,那么我需要构造函数中的每个

假设一个类包含大约10个数据成员,那么初始化该特定类的对象的正确方法是什么?创建一个包含10个参数的构造函数,或者只提供一个默认构造函数,然后使用setter成员函数或其他什么? 基本上我想知道它是如何在实际代码中实现的?
谢谢。

在实际的代码中,如果有一个包含10个需要设置的参数的类,我会非常沉默

但在现实生活中,我知道这种情况比我想象的要频繁得多。下面是我要做的:

首先,评估你的设计。你真的需要这些东西吗

第二,如果您确实需要所有这些东西,或者由于遗留设计而没有出路,那么我需要构造函数中的每个参数,并将默认构造函数设置为私有。应该在初始化列表中初始化所有内容


有时,当数据成员和类方法充分解耦时,我更愿意将所有数据成员移动到它们自己的
struct
,然后在
类中有一个
struct
的成员。通过
const
引用获取该
struct
,并将其分配到init列表中。使
struct
成员
const

成为另一个[design]问题是,如果使用具有那么多参数的类作为基类,然后添加更多参数(例如,由于需求),则很可能忘记初始化它们。所以,是的,重构

这真的不是一个面向对象的设计问题吗

这里的物体是什么?该对象的所有10个字段都是属性吗?有些可以进一步归为另一类吗


当您需要实例化类时,是否总是拥有所有10条数据?你可以为你拥有的部分创建构造函数和/或创建setter/getter。

正确的方法是重构你的类/设计,直到你不再需要10个参数。为什么在询问类时,你会标记一个问题
c
,其中类构造函数接受单个配置对象。配置对象已经设置了方法。好吧,那么说Qt、MFC或Java SDK中所有看起来很复杂的类都不包含这么多成员?@rsjethani:我不会把Qt或特别是MFC作为良好设计的示例。例如,MFC至少有20年的历史,最先进的技术已经远远超过了它的设计。因此,你能推荐一些好的代码/书籍供我参考吗。thanks@rsjethani学习C++?当然,我们已经在这里保存了好几年了。检查一下:谢谢你的精彩列表……你也可以建议一个好的C++项目。你认为有现代设计等吗。