如果创建对象后必须调用set
or init
实际使用它......好吧,这只是一个糟糕的设计。
如果对象在某些成员未按照您希望的方式初始化的情况下可用,则可以稍后设置它们。
这里的黄金法则是——如果您创建一个对象,您应该能够使用它而无需进行任何其他类型的初始化.
扩展答案:
假设您有一个具有 10 个边、10 个角、一种颜色和一个名称的形状,可以将其连接到另一个不同的形状。构造函数应该如下所示:
MyShape(Point c1, Point c2,...., Point c10, Color c, Name n)
正如您所看到的,我省略了连接的形状,因为它可以明智地设置为NULL
如果当前对象未连接。但是,在没有任何其他参数的情况下,该对象无效,因此应在构造函数中设置它们。
可能的重载(或者默认参数)可以是:
MyShape(Point c1, Point c2,...., Point c10, Color c, Name n,
MyShape* connectedShape /*=NULL*/)