为了模拟一个包含关系,其中对象包含相同类型的其他实例,我可以这样定义一个类吗?
class RussianDoll {
string name;
RussianDoll doll;
RussianDoll();
}
我应该如何为这个类构建构造函数?
答案 0 :(得分:4)
某个类可以拥有自己类型的成员吗?
不确定。这实际上非常普遍。例如,可以考虑链表中节点的情况:
class Node {
Node next;
int value;
}
我应该如何为这个类构建构造函数?
您有几种选择(见下文)。显然,应该避免在每次构造函数的调用中创建类的新实例,因为它会导致无限递归。
您可以将Node
作为参数并将其初始化为
this.next = nextArg;
您可以将其初始化为null-reference
this.next = null;
您可以将其初始化为this
this.next = this;
(在构造函数中创建一个完整的对象图形通常是一个坏主意,所以我不会担心这个: - )
答案 1 :(得分:2)
当然,为什么不呢?只要你没有无限期地实例化它。
class RussianDoll {
RussianDoll parentDoll;
RussianDoll(RussianDoll parentDoll) {
this.parentDoll = parentDoll;
}
}
答案 2 :(得分:1)
是。
一个常见的例子是链表。
但是,您无法在构造函数中无条件地创建子项,或者您将创建无限数量的对象。