C++ 将派生类传递给定义为接受基类参数的函数

C++ 将派生类传递给定义为接受基类参数的函数,c++,C++,如果我有一个基类和一个派生类,例如: class Base { protected: int a; public: void setA(int); void getA(int); } class Derived : public Base { private: int b; public: void doThing(); } 然后是使用基类的第三个附加类: class OtherClass { public: Base doClassThing(Base*, B

如果我有一个基类和一个派生类,例如:

class Base {
protected:
  int a;
public:
  void setA(int);
  void getA(int);
}

class Derived : public Base {
private:
  int b;
public:
  void doThing();
}   
然后是使用基类的第三个附加类:

class OtherClass {
public:
  Base doClassThing(Base*, Base*);
}
将派生类传递给定义为返回基类并将基类作为参数的函数的最佳方式是什么。像这样:

Derived *x = new Derived();
Derived *y = new Derived();

doClassThing(x, y);

我会用类型转换传递对象吗?或者我应该在第一次创建对象时键入cast吗?

来回答您的两个问题:

  • 您不会在首次创建对象时对其进行强制转换

  • 呼叫时不需要强制转换;您不需要修改问题中的代码


您根本没有显示任何需要显式强制转换的原因。代码很好,正如您所示。编译器将执行正确的隐式强制转换。您的示例可能有更复杂的扩展,需要显式强制转换。但是回答你的问题取决于你没有展示的细节。新的C++。也许是在为我没有的问题做准备。你可以把你的评论作为一个答案,或者我可以删除这个问题。你的代码没有问题,但是很容易内存泄漏。考虑重构。