-2

在 C++ 中,有没有办法让编译器自动决定你需要哪个函数?你们都知道:

void F (int i);
void F (char *f);
...
int k = 0;
F(k);

char *f = "0";
F(f);

...或通过模板:

template <typename T> 
void F(T i);
...
F(k);
F(f);

什么是类比?有没有办法让编译器决定你需要哪个类?

4

2 回答 2

3

它并不是真正需要的,因为您必须声明一个属于特定类的对象。但是,如果您有一个基类和其他从该基类继承的类,那么您可以使用虚函数,即使您有一个指向该基类的指针或引用,编译器也会选择正确的成员函数。

这实际上是通常称为多态性的最后一部分,您对函数所做的实际上是重载。

于 2012-08-20T11:51:43.250 回答
1

不,与函数不同,您不能有两个具有相同名称的类。

可以使用模板参数对类进行参数化,这有点相似,但又不一样。或者,更常见的是,您可以创建一个工厂,该工厂将根据您传递给它的参数创建多种类型之一的对象。在后一种情况下,对象通常扩展一个公共超类。

于 2012-08-20T11:51:14.760 回答