0

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

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

我正在考虑的具体情况是一个专门的对话框窗口,它只能由某个窗口类创建。

做什么有什么问题(如果有的话)

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

相对

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

2 回答 2

4

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

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

如果没有,请使用任何让您感觉最温暖的东西。只是不值得担心。

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

于 2013-08-16T22:48:26.827 回答
3

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

参考 :

  • 必须在创建时初始化引用
  • 一旦初始化指向一个对象,就不能将引用更改为指向另一个对象

指针:

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

结果 :

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

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

于 2013-08-16T23:08:06.913 回答