我想知道是否使用某個接口的引用而不是指針可能會導致我忽略的一些複雜性。我想這樣做的原因是爲了明確哪些對象應該在構造時「刪除」給予它們的指針,哪些對象應該使用它,而不用擔心其他對象的生命週期以允許多個實例共享一個對象。 (shared_ptr的是不是一個選項)在C++中使用父引用
下面是一個例子:
class Parent
{
public:
virtual void WhoAmI() { printf("Parent\n"); }
};
class Child : public Parent
{
public:
void WhoAmI() { printf("Child\n"); }
};
class ParentUser
{
public:
ParentUser(Parent& parent) : _parent(parent) {}
public:
Parent& _parent;
};
class ParentOwner
{
public:
ParentOwner(Parent* pParent): _pParent(pParent), _parentUser(*pParent) {}
~ParentOwner() { delete _pParent; }
public:
Parent* _pParent;
ParentUser _parentUser;
};
int main()
{
Parent* pParent = new Child();
ParentOwner parentOwner(pParent);
parentOwner._parentUser._parent.WhoAmI();
char stopper;
cin >> stopper;
return 0;
}
這工作正常,並預期輸出:「兒童」