Come previsto, il compilatore (VisualStudio 2008) darà un avvertimentoFunzione con valore di ritorno mancante, il comportamento in fase di esecuzione
C4715 avvertimento: 'doSomethingWith': non tutti i percorsi di controllo restituiscono un valore
quando si compila il seguente codice:
int doSomethingWith(int value)
{
int returnValue = 3;
bool condition = false;
if(condition)
// returnValue += value; // DOH
return returnValue;
}
int main(int argc, char* argv[])
{
int foo = 10;
int result = doSomethingWith(foo);
return 0;
}
Ma il programma funziona bene. Il valore restituito della funzione doSomethingWith() è 0.
È solo un comportamento non definito oppure esiste una determinata regola su come il valore del risultato viene creato/calcolato in fase di esecuzione. Cosa succede con i tipi di dati non POD come valore di ritorno?
Dai un'occhiata a questa risposta: http://stackoverflow.com/questions/1610030/why-can-you-return-from-a-non-void-function-without-returning-a-value- senza-pro/1610454 # 1610454 –
@fnieto: Ah, capisco, questa è un'ottima risposta. Non l'ho trovato io stesso, prima di chiedere ... – nabulke