![]() |
1
2
你完全不受限制,你只需要做一些不同的事情。 数据类的目的是非常清楚它们包含的内容和顺序,并且只允许 主构造器 参数列表。 但你还有其他选择:使用 二级建造师 和/或 创建顶级函数 与具有不同重载的类同名,或创建 工厂方法 在伴生对象中:
也可以通过将主构造函数设为私有来隐藏它,但不能隐藏
顺便说一下,让主构造函数的数据类具有这个约定,真的有助于序列化/反序列化库了解如何处理否则可能是猜测的类。这是件好事! |
![]() |
2
0
我要说的第一件事是,这是我个人的观点,所以,拿它来说吧。 来自官方考特林 documentation
所以
从我的角度来看,当您想将某个东西传递给构造函数但类不存储该数据时,可能有一些逻辑与之相关。 要执行此操作的常见情况是:
在第一种情况下,我们清楚地看到这不是
第二种情况是糟糕的代码,它引入了对另一个类的不必要依赖,并隐藏了该类实际需要的东西。
构造函数应该很简单,它们获取类所需的数据并将其绑定到字段中,不应该存在太多的逻辑,应该由使用构造函数准备所有数据的人员决定,如果在创建新实例时有一些可重复的代码,那么最好使用
|
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 3 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |