与this相关,我想知道是否有理由使用指向父对象的指针(不是在讨论父类)而不是引用。
显然,如果父级可以为null,则引用将不起作用。但是,如果父对象在其生命周期中创建并销毁子对象,以便子对象返回其父对象的指针永远不会为空,该怎么办?我认为在这种情况下听起来没问题,但我还没有看到其他人这样做,我仍然在学习很多关于C ++的知识。
我想到的具体情况是一个专门的对话框窗口,只能由某个窗口类创建。
执行
时有什么问题(如果有的话)class Child {
Child(Parent& parent) : parent_(parent) {}
Parent& parent_;
};
与
class Child {
Child(Parent* parent) : parent_(parent) {}
Parent* parent_;
};
答案 0 :(得分:4)
人们会整天争论它,但参考只是有限的指针。不要为使用哪个而苦恼。
指针的优点是您可以复制子项,或创建没有父项的子项,以便稍后给出。如果你需要这样做,你必须使用指针。
如果没有,请使用让您感觉最温暖的内容。这不值得担心。
如果你制作指针Parent *const parent_
,它实际上与引用相同。
答案 1 :(得分:3)
以下是引用和指针之间的一些区别:
参考文献:
指针:
后果:
因此,根据您希望在子项和父项之间建立的关系,您将选择指针或引用。如果你不需要指针,也更喜欢引用指针。
换句话说,如果子对象在其生命周期内具有相同的父对象,并且在创建子对象时存在父对象:使用引用指向父对象。