Рубрики

Поддерживает ли C перегрузку функций?

Прежде всего, что такое перегрузка функций? Перегрузка функций — это особенность языка программирования, которая позволяет иметь много функций с одинаковыми именами, но с разными сигнатурами.
Эта функция присутствует в большинстве объектно-ориентированных языков, таких как 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 можно получить фактический тип данных первого аргумента с помощью typecast. т.е. внутри функции foo

if(arg2 == 0)

{

  struct1PtrVar = (Struct1 *)arg1;

}

else if(arg2 == 1)

{

  struct2PtrVar = (Struct2 *)arg1;

}
else
{

  /*Обработка ошибок*/

}

Может быть несколько других способов реализации перегрузки функций в C. Но все они должны будут использовать указатели — самая мощная функция C.
На самом деле, говорят, что без использования указателей нельзя эффективно и эффективно использовать C в реальной программе!

Рекомендуемые посты:

Поддерживает ли C перегрузку функций?

0.00 (0%) 0 votes