2013-08-16 44 views
0

this相关,我想知道是否有理由使用指向父对象(而不是谈论父类)的指针而不是引用。让子对象有一个对其父对象的引用而不是指针是不好的做法吗?

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

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

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

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

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

回答

4

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

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

如果不是,请使用哪一个让你感到最温暖。这不值得担心。

如果您制作指针Parent *const parent_它实际上与参考相同。

+2

使用指针时,更改父项也会更容易/更清晰。 –

3

这里引用和指针之间的一些差异:

参考文献:

  • 的引用必须在创建时
  • 一旦初始化为指向一个对象进行初始化,你不能改变的参照指向另一物体

Po半成品:

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

后果:

因此,根据你想要的孩子和父母之间的关系,你会选择指针或引用。如果你不需要指针,也更喜欢参考指针。

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

相关问题