Comment sortir d'une fonction void en C ++?

158

Comment pouvez-vous quitter prématurément une fonction sans renvoyer une valeur s'il s'agit d'une fonction void? J'ai une méthode void qui n'a pas besoin d'exécuter son code si une certaine condition est vraie. Je ne veux vraiment pas avoir à changer la méthode pour renvoyer réellement une valeur.

Jason Taylor
la source
9
Malgré cela, c'est une question très simple, j'ai voté pour parce que j'ai eu le même problème lorsque j'ai écrit mon premier programme C :)
rmeador
11
@itsbunnies: Comme mentionné ailleurs, il n'y a pas de questions de programmation trop simples pour être posées sur SO. Si vous avez eu des problèmes avec cela, quelqu'un d'autre dans le passé en a un autre dans le passé et quelqu'un d'autre dans le futur aussi.
Bill the Lizard
@BilltheLizard: Et le premier programme à avoir rencontré ce problème? Qui a eu ce problème dans son passé? ;-)
flarn2006
1
je viens d'avoir cette question moi-même :)
moldave
Notez que vous pouvez toujours réécrire une fonction pour toujours revenir en bas, ce qui est un principe de programmation structuré (un point d'entrée, un point de sortie),
Malcolm McLean

Réponses:

195

Utilisez une déclaration de retour!

return;

ou

if (condition) return;

Vous n'avez pas besoin (et ne pouvez pas) spécifier de valeurs, si votre méthode retourne void.

Mehrdad Afshari
la source
2
Encore plus précis: vous ne devez PAS spécifier de valeur de retour si votre méthode retourne void.
Jonathan Leffler
Aha, donc quand nous écrivons retour; ne rien retourner signifie retourner le vide lui-même hein? le vide ne veut rien dire de toute façon !! Hmm je comprends maintenant.
quantum231
@ quantum321 Je pense que la valeur de retour est techniquement indéfinie, pas vide, mais la considérer comme "vide" est utile.
Dr.Personne Person II
@ Dr.PersonPersonII par 'si votre méthode renvoie "void"', je voulais dire la vue purement syntaxique du type de retour de la méthode déclaré comme void. Techniquement, la méthode ne renvoie rien. ce qui est différent de renvoyer undefined.
Mehrdad Afshari
2
En fait, vous pouvez return void()aussi écrire :)
Courses de légèreté en orbite
12

Tu veux dire comme cela?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}
jwfearn
la source
10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Vous pouvez simplement utiliser le mot-clé return comme vous le feriez dans n'importe quelle autre fonction.

Stephen Caldwell
la source
-1

Je sais que la question est déjà répondue et utiliser une returndéclaration fait le travail. Mais vous pouvez également inclure le reste de la fonction dans le elsebloc de la ifcondition.

Amal K
la source