c++ - 对指针和 C++ 多态性的引用

标签 c++ reference polymorphism pointers parameters

有谁知道为什么会出现编译错误?我试过 VS 2005 和 Codewarrior:

class Parent {
   protected:
      int m_Var;
   public:
      Parent() : m_Var(0) {}
      virtual ~Parent() {}
      void PubFunc();
};

class Child : public Parent {
   protected:
      bool m_Bool;
   public:
      Child() : m_Bool(false) {}
      virtual ~Child() {}
      void ChildFunc();
};

void RemoveObj(Parent *& ppObj)
{
   delete ppObj;
   ppObj = 0;
}

int main()
{
   Parent* pPObj = 0;
   Child*  pCObj = 0;
   pPObj = new Parent();
   pCObj = new Child();

   RemoveObj(pPObj);
   RemoveObj(pCObj);
   return 1;
}

Visual Studio 说:

refptr.cpp(33) : error C2664: 'RemoveObj' : cannot convert parameter 1 from 'Child *' to 'Parent *&'

谢谢

最佳答案

RemoveObj 的 ppObj 参数是对 Parent* 的引用。如果 RemoveObj() 方法将指针替换为指向新的 Parent 对象的指针会怎样?当该方法返回您的 pCObj Child* 时,将不再指向 Child 对象。

关于c++ - 对指针和 C++ 多态性的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898955/

相关文章:

C++ 标准 : dereferencing NULL pointer to get a reference?

c++ - 这种在 DLL 中初始化数组的设计有什么问题吗?

对元组向量进行排序需要第二个值的引用?

c++ - 如何修复在 Linux 内核 SPI 驱动程序中始终无法通过验证的 SPI 驱动程序

c++ - 为什么在 qtablewidget 的第一列中设置值时 gui 崩溃

c++ - 派生类特定函数,在重写的虚函数内,由基类指针调用

c++ - 在 C++ 中覆盖具有不同返回类型的方法

c# - 在控制基类时,是否存在应该使用 new 而不是 override 的情况?

c++ - 来自 Boost 的 JSON 解析器的警告 C4512 的解决方法

c++ - hashTable 模板化实现的问题