将继承的类传递给c ++中的函数

时间:2012-01-22 19:29:38

标签: c++ inheritance virtual-functions

我在C ++中的继承方面遇到了一些问题,我无法弄明白。

所以,我说有一些派生自stl列表的类,即:

class Class1: public list<T>{
      virtual func1();

}

class Class2 : public Class1<w/e>{
         func1();
}

我遇到的问题是将这些问题传递给函数。我如何正确地将其中一个的实例传递给一个函数,以便它可以使用正确的虚函数,如果任何一个类型的实例都可以传递?我有一段时间没有完成继承和虚函数,所以我在这里有点生疏。 (这假设函数不是类的成员函数)。

1 个答案:

答案 0 :(得分:6)

您需要将它们作为参考传递给函数

int function(Class1& obj);

或作为指针;

int function(Class1* obj);

它应该只是简单地调用虚拟方法的正确版本。

如果你没有其中任何一个传递它们

int function(Class1 obj);

该对象将被复制构造为函数中始终为Class1,并始终调用Class1 :: func1()