让子对象引用其父对象而不是指针是不好的做法吗?

时间:2013-08-16 22:40:04

标签: c++ pointers reference parent-child

this相关,我想知道是否有理由使用指向父对象的指针(不是在讨论父类)而不是引用。

显然,如果父级可以为null,则引用将不起作用。但是,如果父对象在其生命周期中创建并销毁子对象,以便子对象返回其父对象的指针永远不会为空,该怎么办?我认为在这种情况下听起来没问题,但我还没有看到其他人这样做,我仍然在学习很多关于C ++的知识。

我想到的具体情况是一个专门的对话框窗口,只能由某个窗口类创建。

执行

时有什么问题(如果有的话)
class Child {
    Child(Parent& parent) : parent_(parent) {}
    Parent& parent_;
};

class Child {
    Child(Parent* parent) : parent_(parent) {}
    Parent* parent_;
};

2 个答案:

答案 0 :(得分:4)

人们会整天争论它,但参考只是有限的指针。不要为使用哪个而苦恼。

指针的优点是您可以复制子项,或创建没有父项的子项,以便稍后给出。如果你需要这样做,你必须使用指针。

如果没有,请使用让您感觉最温暖的内容。这不值得担心。

如果你制作指针Parent *const parent_,它实际上与引用相同。

答案 1 :(得分:3)

以下是引用和指针之间的一些区别:

参考文献:

  • 必须在创建时初始化引用
  • 初始化为指向对象后,您无法将引用更改为指向另一个对象

指针:

  • 指针不需要初始化,可以指向NULL
  • 您可以修改指针以指向另一个对象

后果:

因此,根据您希望在子项和父项之间建立的关系,您将选择指针或引用。如果你不需要指针,也更喜欢引用指针。

换句话说,如果子对象在其生命周期内具有相同的父对象,并且在创建子对象时存在父对象:使用引用指向父对象。