在 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);
什么是类比?有没有办法让编译器决定你需要哪个类?
在 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);
什么是类比?有没有办法让编译器决定你需要哪个类?
它并不是真正需要的,因为您必须声明一个属于特定类的对象。但是,如果您有一个基类和其他从该基类继承的类,那么您可以使用虚函数,即使您有一个指向该基类的指针或引用,编译器也会选择正确的成员函数。
这实际上是通常称为多态性的最后一部分,您对函数所做的实际上是重载。
不,与函数不同,您不能有两个具有相同名称的类。
可以使用模板参数对类进行参数化,这有点相似,但又不一样。或者,更常见的是,您可以创建一个工厂,该工厂将根据您传递给它的参数创建多种类型之一的对象。在后一种情况下,对象通常扩展一个公共超类。