Як вийти з функції пустоти в C ++?


158

Як можна передчасно вийти з функції, не повертаючи значення, якщо це недійсна функція? У мене недійсний метод, який не повинен виконувати свій код, якщо певна умова є істинною. Я дійсно не хочу змінювати метод, щоб фактично повернути значення.


9
Незважаючи на те, що це дійсно просте запитання, я підтримав те, що в мене була така ж проблема, коли я писав свою першу програму на С :) :)
rmeador

11
@itsbunnies: Як уже згадувалося в іншому місці, немає питань щодо програмування, надто простих, щоб їх можна було задавати в SO. Якщо у вас виникли проблеми з цим, так це має хтось ще в минулому, а також хтось ще в майбутньому.
Білл Ящірка

@BilltheLizard: Що з першою програмою, у кого коли-небудь виникла ця проблема? Хто мав цю проблему в своєму минулому? ;-)
flarn2006

1
просто у мене було це запитання :)
moldovean

Зауважте, ви завжди можете переписати функцію, щоб завжди повертатися внизу, що є структурованим принципом програмування (одна точка входу, одна точка виходу),
Малькольм Маклін

Відповіді:


195

Скористайтеся заявою про повернення!

return;

або

if (condition) return;

Якщо ваш метод повертається, вам не потрібно (і не можна) вказувати будь-які значення void.


2
Ще більше, що НЕ Вказувати значення повернення, якщо ваш метод повертає недійсним.
Джонатан Леффлер

Ага, тому коли ми пишемо повернення; не повернути нічого означає повернути нікчемність, а? пустота нічого не означає !! Хм, я розумію зараз.
Quantum231

@ quantum321 Я думаю, що повернене значення технічно не визначене, недійсне, але вважати це "недійсним" корисно.
Доктор Персона Особа II,

@ Dr.PersonPersonII під "якщо ваш метод повертає" недійсним ", я мав на увазі суто синтаксичний вигляд типу повернення методу, оголошений як 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.