Как выйти из функции 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
}

10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

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


-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.