Как выйти из функции void в C ++?

158

Как вы можете преждевременно выйти из функции, не возвращая значение, если это функция void? У меня есть метод void, который не должен выполнять свой код, если выполняется определенное условие. Я действительно не хочу менять метод, чтобы фактически вернуть значение.

Джейсон Тейлор
источник
9
Несмотря на то, что это действительно простой вопрос, я проголосовал, потому что у меня была та же проблема, когда я писал свою первую программу на C :)
rmeador
11
@itsbunnies: Как уже упоминалось, в SO нет слишком простых вопросов для программирования. Если у вас были проблемы с ним, то есть кто-то еще в прошлом и кто-то еще в будущем.
Билл Ящерица
@BilltheLizard: А как насчет первой программы, у которой когда-либо была такая проблема? У кого была эта проблема в его прошлом? ;-)
flarn2006
1
только что сам задал этот вопрос :)
молдова
Обратите внимание, что вы всегда можете переписать функцию так, чтобы она всегда возвращалась внизу, что является принципом структурированного программирования (одна точка входа, одна точка выхода),
Малкольм Маклин,

Ответы:

195

Используйте инструкцию возврата!

return;

или

if (condition) return;

Вам не нужно (и нельзя) указывать какие-либо значения, если ваш метод возвращает void.

Мехрдад Афшари
источник
2
Более того: вы НЕ должны указывать возвращаемое значение, если ваш метод возвращает void.
Джонатан Леффлер
Ага, поэтому, когда мы напишем возвращение; ничего не возвращать означает возвращать пустоту самому, а? пустота все равно ничего не значит !! Хм, я понял это сейчас.
квант231
@ квант321 Я думаю, что возвращаемое значение технически не определено, а не пусто, но полезно думать о нем как о пустоте.
Доктор Лицо Человек II
@ Dr.PersonPersonII под «если ваш метод возвращает« void »», я имел в виду чисто синтаксическое представление возвращаемого типа метода, объявленного как void. Технически метод ничего не возвращает. который отличается от возврата неопределенного.
Мехрдад Афшари
2
На самом деле вы return void()тоже можете написать :)
гонки на легкость на орбите
12

Вы имеете в виду, как это?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}
jwfearn
источник
10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Вы можете просто использовать ключевое слово return так же, как и в любой другой функции.

Стивен Колдуэлл
источник
-1

Я знаю, что на вопрос уже дан ответ, и использование returnзаявления делает работу. Но в качестве альтернативы вы также можете включить оставшуюся часть функции в elseблок ifусловия.

Амаль К
источник