【问题标题】:Can a class definition contain that class' pointer in C++? [duplicate]类定义可以在 C++ 中包含该类的指针吗? [复制]
【发布时间】:2018-02-18 22:08:09
【问题描述】:

我正在尝试以这种方式定义一个类(简化):

class Student
{
    private:
        Student* pointer;
    public:
        set_pointer(Student*);
}

这在 C++ 中是否合法,是否符合面向对象的设计?

【问题讨论】:

  • 是的,这是合法的。它是否是一个好的设计取决于你将如何处理它。
  • @NeilButterworth:你为什么要在 cmets 部分回答?
  • @Lightness 因为我想。因为我认为这是一个骗局。
  • 有人能告诉我们这与 OO 设计有什么不一致吗?
  • @NeilButterworth:两个不好的原因。好的。

标签: c++ oop pointers


【解决方案1】:

是的,一个类可以存储一个指向同一类型对象的指针(可能是它自己,也可能是其他一些实例)。

这在链表实现中很常见,其中节点存储指向 next 节点的指针。

至于是否“符合面向对象的设计”,无法一概而论;这取决于程序。就我个人而言,我对这种形式的代码持怀疑态度,但同样你不能真正概括。

【讨论】:

  • 这样的类是“递归定义的”。
  • 所以你对链表持怀疑态度?
  • @ChiefTwoPencils:不,他们不是。
  • @EJP:有时。
  • 有时为什么?树呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2017-04-24
  • 2020-06-14
  • 1970-01-01
相关资源
最近更新 更多