一个类可以拥有自己类型的成员吗?

时间:2011-06-27 17:38:38

标签: oop

为了模拟一个包含关系,其中对象包含相同类型的其他实例,我可以这样定义一个类吗?

class RussianDoll {

    string name;
    RussianDoll doll;

    RussianDoll();
}

我应该如何为这个类构建构造函数?

3 个答案:

答案 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)

是。
一个常见的例子是链表。

但是,您无法在构造函数中无条件地创建子项,或者您将创建无限数量的对象。