¿Cómo se sale de una función vacía en C ++?

158

¿Cómo puede salir prematuramente de una función sin devolver un valor si es una función nula? Tengo un método nulo que no necesita ejecutar su código si cierta condición es verdadera. Realmente no quiero tener que cambiar el método para devolver un valor.

Jason Taylor
fuente
9
A pesar de que esta es una pregunta muy simple, voté porque tuve el mismo problema cuando escribí mi primer programa en C :)
rmeador
11
@itsbunnies: Como se mencionó en otra parte, no hay preguntas de programación demasiado simples para hacerse en SO. Si tuvo problemas con él, también lo ha hecho otra persona en el pasado y otra en el futuro.
Bill the Lizard
@BilltheLizard: ¿Qué pasa con el primer programa que nunca tuvo ese problema? ¿Quién tuvo ese problema en su pasado? ;-)
flarn2006
1
acabo de tener esta pregunta yo mismo :)
moldovean
Tenga en cuenta que siempre puede reescribir una función para que siempre regrese en la parte inferior, que es un principio de programación estructurado (un punto de entrada, un punto de salida),
Malcolm McLean

Respuestas:

195

Use una declaración de devolución!

return;

o

if (condition) return;

No necesita (y no puede) especificar ningún valor, si su método regresa void.

Mehrdad Afshari
fuente
2
Aún más al punto: NO debe especificar ningún valor de retorno si su método devuelve nulo.
Jonathan Leffler
Ajá, entonces cuando escribimos return; no devolver nada significa devolver el vacío, ¿eh? ¡vacío no significa nada de todos modos! Hmm lo entiendo ahora.
quantum231
@ quantum321 Creo que el valor de retorno es técnicamente indefinido, no vacío, pero es útil pensar que es "vacío".
Dr. Person Person II
@ Dr.PersonPersonII por 'si su método devuelve "vacío", me refería a la vista puramente sintáctica del tipo de retorno del método declarado como void. Técnicamente, el método no devuelve nada. que es diferente de regresar indefinido.
Mehrdad Afshari
2
En realidad se puede escribir return void()también :)
Luminosidad razas en órbita
12

¿Quieres decir así?

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

Puede usar la palabra clave return como lo haría en cualquier otra función.

Stephen Caldwell
fuente
-1

Sé que la pregunta ya está respondida y usar una returndeclaración hace el trabajo. Pero también puede incluir el resto de la función en el elsebloque de la ifcondición.

Amal K
fuente