类 "overloading"

Class "overloading"

本文关键字:overloading      更新时间:2023-10-16

在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);

什么是阶级层面的类比?有没有一种方法可以让编译器决定您需要哪个类?

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

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

不,与函数不同,不能有两个同名的类。

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