C++ 如何调用其中一个派生类

C++ 如何调用其中一个派生类,c++,inheritance,C++,Inheritance,我想知道是否可以在函数中使用基类作为参数,但在调用传递派生类的函数时 在.h文件中 class parent { virtual void foo(); } class child_a: parent { void foo(); } class child_b: parent { void foo(); } in main.cpp void bar(parent p) { // Doing things } int main() { child_

我想知道是否可以在函数中使用基类作为参数,但在调用传递派生类的函数时

在.h文件中

class parent
{
    virtual void foo();
}

class child_a: parent
{
    void foo();
}

class child_b: parent
{
    void foo();
}
in main.cpp

void bar(parent p)
{ 
    // Doing things
}

int main()
{
    child_a a;
    bar(a);
    return 0;
}
还是必须使用重载函数?
有其他方法吗?

如果您按值传递参数,将调用复制构造函数,以便您实际复制父类型的对象

如果通过引用或指针传递它,实际上就有一个子类

class parent{
public:   
    parent(){
    }
    parent( const parent &obj){
        cout<<"I copy a parent"<<endl;
    }
};

class child : public parent{
public:
    child(){
    }    
    child( const child &obj){
        cout<<"I copy a child"<<endl;
    }
};

void foo(parent p){
    cout<<"I am in foo"<<endl;
}

int main()
{
   child c;
   foo(c);
}
类父类{
公众:
父项(){
}
父对象(常量父对象和对象){

cout可能是输入错误。您可能想编写
bar(a)
而不是
foo(a)
。是的,您是正确的