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){
解决任何问题的方法要么是通过重载,要么是通过虚拟函数和多态性。