Jak wyjść z funkcji void w C ++?

158

Jak możesz przedwcześnie wyjść z funkcji bez zwracania wartości, jeśli jest to funkcja void? Mam metodę void, która nie musi wykonywać swojego kodu, jeśli określony warunek jest prawdziwy. Naprawdę nie chcę zmieniać metody, aby faktycznie zwracała wartość.

Jason Taylor
źródło
9
Mimo to jest to naprawdę proste pytanie, zagłosowałem za, ponieważ miałem ten sam problem, kiedy pisałem swój pierwszy program w C :)
rmeador
11
@itsbunnies: Jak wspomniano w innym miejscu, nie ma zbyt prostych pytań programistycznych, które można by zadawać w SO. Jeśli miałeś z tym problem, ktoś inny miał z tym problem, a także ktoś inny w przyszłości.
Bill the Lizard
@BilltheLizard: A co z pierwszym programem, który kiedykolwiek miał ten problem? Kto miał ten problem w swojej przeszłości? ;-)
flarn2006
1
właśnie miałem takie pytanie :)
mołdawski
Zauważ, że zawsze możesz przepisać funkcję, aby zawsze powracała na dole, co jest strukturalną zasadą programowania (jeden punkt wejścia, jeden punkt wyjścia),
Malcolm McLean

Odpowiedzi:

195

Użyj instrukcji zwrotu!

return;

lub

if (condition) return;

Nie musisz (i nie możesz) określać żadnych wartości, jeśli twoja metoda zwraca void.

Mehrdad Afshari
źródło
2
Co więcej: NIE WOLNO podawać żadnej wartości zwracanej, jeśli metoda zwraca wartość void.
Jonathan Leffler
Aha, więc kiedy piszemy powrót; nie zwracanie czegokolwiek oznacza powrót samej pustki, co? i tak nic nie znaczy !! Hmm, teraz rozumiem.
quantum231
@ quantum321 Myślę, że wartość zwracana jest technicznie niezdefiniowana, nie jest pusta, ale myślenie o niej jako o „pustej” jest przydatne.
Dr Osoba II
@ Dr.PersonPersonII przez 'if twoja metoda zwraca "void"', miałem na myśli czysto składniowy widok zwracanego typu metody zadeklarowanego jako void. Z technicznego punktu widzenia metoda nic nie zwraca. co różni się od zwracania undefined.
Mehrdad Afshari
2
Właściwie możesz return void()też pisać :)
Lightness Races in Orbit
12

Masz na myśli to?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}
jwfearn
źródło
10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Możesz po prostu użyć słowa kluczowego return, tak jak w każdej innej funkcji.

Stephen Caldwell
źródło
-1

Wiem, że odpowiedź na to pytanie została już udzielona, ​​a użycie returnstwierdzenia spełnia swoje zadanie. Ale alternatywnie możesz również dołączyć resztę funkcji do elsebloku ifwarunku.

Amal K.
źródło