C++ 如何调用其中一个派生类
我想知道是否可以在函数中使用基类作为参数,但在调用传递派生类的函数时 在.h文件中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_
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)
。是的,您是正确的