📜  C是否支持函数重载?

📅  最后修改于: 2021-05-26 00:28:47             🧑  作者: Mango

首先,什么是函数重载?函数重载是一种编程语言的功能,该功能允许一个函数具有多个具有相同名称但具有不同签名的函数。
大多数面向对象的语言(例如C++和Java)都具有此功能。但是C(不是面向对象的语言)不支持此功能。但是,可以间接实现C语言中的类似功能。一种方法如下。

使用void *类型的指针作为该函数的参数。另一个参数告诉正在传递的第一个参数的实际数据类型。

int foo(void * arg1, int arg2);

假设arg2可以解释如下。 0 = Struct1类型变量,1 = Struct2类型变量等。这里Struct1和Struct2是用户定义的结构类型。

在不同位置调用函数foo时…

foo(arg1, 0);   /*Here, arg1 is pointer to struct type Struct1 variable*/
    foo(arg1, 1);    /*Here, arg1 is pointer to struct type Struct2 variable*/

由于foo的第二个参数跟踪第一个类型的数据类型,因此在foo函数内部,可以通过类型转换相应地获取第一个参数的实际数据类型。即在foo函数

if(arg2 == 0)
{
  struct1PtrVar = (Struct1 *)arg1;
}
else if(arg2 == 1)
{
  struct2PtrVar = (Struct2 *)arg1;
}
else
{
  /*Error Handling*/
}

还有其他几种方法可以在C中实现函数重载。但是,所有这些方法都必须使用指针-C的最强大功能。
实际上,据说如果不使用指针,就无法在现实世界的程序中高效地使用C!

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。