假设我们有:
class Base {…}
class A : public Base {…}
class B : public Base {…}
是否可以将泛型方法设置为参数类型:myMethod([typei'mlookingfor] c) {}
这样我就可以在不重载方法的情况下将Base,A和B传递给myMethod()
?并使其与引用和指针一起工作?
最佳答案
如果对基类的指针或引用适用于您,则只需使用以下方法:
void myMethod(Base& c) {}
A a;
B b;
myMethod(a); //OK
myMethod(b); //OK
请注意,您必须使用引用或指针来防止对象 slice 。如果方法是
myMethod(Base c)
,则将丢失派生对象的类型信息。如果没有,您可以使用模板
template<typename T>
void myMethod(T& c)
{
}
A a;
B b;
myMethod(a);
myMethod(b);
关于c++ - 是否可以将方法参数的类型定义为类还是任何派生类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11715642/