C++ 获取参数的子类

C++ 获取参数的子类,c++,inheritance,multiple-inheritance,C++,Inheritance,Multiple Inheritance,我有一个方法,它获取一个父类作为参数。 我需要在编译时知道该参数的子类是什么 class A{ ... }; class B: public A{ ... }; class C: public A{ ... }; void foo(A a){ //is a specialized in B or C? } C c; foo(c); //here it is C 您的期望背后的概念是一种编译时多态性 您可以通过函数重载来实现它 写两个不同的函数没有错(正如DimChtz在评论中所

我有一个方法,它获取一个父类作为参数。 我需要在编译时知道该参数的子类是什么

class A{
...
};

class B: public A{
...
};

class C: public A{
...
};

void foo(A a){
    //is a specialized in B or C?
}

C c;
foo(c); //here it is C

您的期望背后的概念是一种编译时多态性

您可以通过函数重载来实现它


写两个不同的函数没有错(正如DimChtz在评论中所说)…一个带类型B的参数,另一个带类型C的参数。

解释为什么您认为需要知道这一点。事实上,在foo()中,由于切片的原因,它始终是类型为A的对象。使用所示的
foo
,按值取
A
对象,它既不是
B
也不是
C
。您应该有2个
foo
函数:
void foo(B){/code>和
void foo(C){
解决任何问题的方法要么是通过重载,要么是通过虚拟函数和多态性。