Я прочитал в статье «Думая на C++» Брюсом Экелем, что, когда компилятор C++ встречает функцию, он украшает свое имя, используя его имя и аргументы. Для функции int func (char ch); он украсит его имя как _func_char. Он не использует тип возвращаемого значения.Проверка возвращаемого типа функции компилятором
В этом случае В приведенной ниже программе, как компилятор жалуется на «неверное преобразование из int в const char *», когда он не сохранил возвращаемый тип во время украшения имени функции? Кто-нибудь может прояснить?
#include <iostream>
using namespace std;
int func()
{
int i = 5;
return i;
}
int main()
{
string str = func();
}
http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B – v01d
Название mangling предназначено только для * ссылки * - компилятор все еще знает все, что ему нужно знать о функциях внутри единицы компиляции. –
Две функции не могут существовать с одними и теми же аргументами, но с разными типами возвращаемых данных, поэтому нет необходимости вводить возвращаемый тип. – Pubby