2013-04-01 7 views
1

Почему функция не может быть перегружена ее типами возврата. Там не должно быть языка, который поддерживает такую ​​перегрузку. Я хочу знать причину того, что происходит, если это разрешено, или почему это не позволяет перегрузке такой функции по ее возвращаемому типу.Почему я не могу перегрузить функцию по возвращаемому типу?

int func(); 
bool func(); 
int main() 
{ 
    int iret = func(); 
    bool bret = func(); 
} 

Всегда возвращайтесь к этому вопросу в моем сознании. Надеюсь, удовлетворенный ответ.

+1

http://stackoverflow.com/questions/442026/function- overloading-by-return-type –

+0

Спасибо Aswin ... :) –

ответ

2

Функция как

double function fn1() 
{ 

int a = 2; 
return a; 

} 

В приведенном выше, например, a будет возвращен неявно преобразованным в double.

int function fn1() 
{ 

double a = 2; 
return a; 

} 

В вышеуказанных примерах. a будет возвращен неявно преобразованным в int.

A fn call for this fn будет как int a = fn1(); или double a = fn1();.

В обоих случаях оба определения могут вызывать неоднозначность в отношении того, что должно быть вызвано. Тот факт, что возвращаемые значения хранятся в int или double, не влияет на определение вызываемого fn. Функция сначала разрешается, а затем выполняется, а затем присваивается возвращаемое значение.

Если оба не имеет типа возврата вызов будет просто fn1(); делает его неоднозначным, можно ли назвать fn1() с возвращаемым типом int или double

+0

Спасибо, SuvP ... –

Смежные вопросы