让子对象引用其父对象而不是指针,这是不是一种糟糕的做法

Is it bad practice to have a child object have a reference to its parent object instead of a pointer?

本文关键字:一种 是不是 对象引用 对象 指针      更新时间:2023-10-16

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

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

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

有哪些问题(如果有的话)

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

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

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

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

如果没有,就用里面最暖和的。这根本不值得担心。

如果将指针设为Parent *const parent_,则它实际上与引用相同。

引用和指针之间有一些区别:

参考文献:

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

指针:

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

后果:

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

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

相关文章: