Рубрики

оператор возврата против выхода () в main ()

В C ++, в чем разница между exit (0) и return 0 ?

Когда exit (0) используется для выхода из программы, деструкторы для нестатических объектов локальной области не вызываются. Но деструкторы вызываются, если используется return 0.

Программа 1 — — использует выход (0) для выхода

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

  

using namespace std;

  

class Test {

public:

  Test() {

    printf("Inside Test's Constructor\n");

  }

  

  ~Test(){

    printf("Inside Test's Destructor");

    getchar();

  }

};

  

int main() {

  Test t1;

  

  // используем exit (0) для выхода из main

  exit(0);

}

Выход:
Конструктор внутри теста

Программа 2 — использует возврат 0 для выхода

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

  

using namespace std;

  

class Test {

public:

  Test() {

    printf("Inside Test's Constructor\n");

  }

  

  ~Test(){

    printf("Inside Test's Destructor");

  }

};

  

int main() {

  Test t1;

  

   // используем return 0 для выхода из main

  return 0;

}

Выход:
Конструктор внутри теста
Внутри тестового деструктора

Вызов деструкторов иногда важен, например, если деструктор имеет код для освобождения ресурсов, таких как закрытие файлов.

Обратите внимание, что статические объекты будут очищены, даже если мы вызовем exit (). Например, см. Следующую программу.

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

  

using namespace std;

  

class Test {

public:

  Test() {

    printf("Inside Test's Constructor\n");

  }

  

  ~Test(){

    printf("Inside Test's Destructor");

    getchar();

  }

};

  

int main() {

  static Test t1;  // Обратите внимание, что t1 является статическим

  

  exit(0);

}

Выход:
Конструктор внутри теста
Внутри тестового деструктора

Предоставлено indiarox . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

оператор возврата против выхода () в main ()

0.00 (0%) 0 votes