Это ограничение c / c ++ или какова возможная причина такого неловкого соглашения?
Да, и причина того, что C не поддерживает перегрузку функций, заключается в том, что искажение имен (преобразование имен функций, используемых компоновщиком), используемое для стандарта C, не учитывает его параметры функции.
То есть void func(int)
в C искажается до _func
поэтому вы не можете иметь func(int)
и func(bool)
вместе, так как оба будут преобразованы в _func
.
В то время как в C ++ искаженное имя для функции учитывает все ее параметры функции, но поскольку искажение имени в C ++ не было стандартизировано, искажение имени зависит от компилятора.
Еще одна вещь, которую нужно иметь в виду, это то, что C ++ не учитывает возвращаемый параметр функции в искаженном имени. Следовательно, нельзя перегружать функции как void func(int)
и bool func(int)
вместе.
- Самрат Патил