return statement
Lệnh return kết thúc hàm hiện tại và trả về giá trị cho caller. Trong main(), nó kết thúc chương trình bình thường: gọi destructor của đối tượng local, flush buffer, đóng file. Trả về int cho hệ điều hành.
Cú pháp: return expression;
Ví dụ
#include <iostream>
using namespace std;
class Method {
public:
Method() { cout << "Constructor\n"; }
~Method() { cout << "Destructor"; }
};
int main() {
Method m;
return 0;
}
Kết quả
Constructor
Destructor
exit()
Hàm exit() kết thúc chương trình ngay lập tức. Chỉ gọi constructor (nếu object tạo trước), không gọi destructor của object local trong main(). Không flush buffer đầy đủ. Khai báo trong <cstdlib>.
Cú pháp: void exit(int status);
Ví dụ
#include <iostream>
#include <cstdlib>
using namespace std;
class Method {
public:
Method() { cout << "Constructor\n"; }
~Method() { cout << "Destructor"; }
};
int main() {
Method m;
exit(0);
}
Kết quả
Constructor
So sánh
| Đặc điểm | return 0; | exit(0); |
|---|---|---|
| Gọi destructor local | Có | Không |
| Flush stdio buffers | Có | Có (thường) |
| Gọi atexit handlers | Có | Có |
| Trả về mã cho OS | Có | Có |
| Khuyên dùng trong main() | Có (chuẩn) | Tránh (trừ lỗi nghiêm trọng) |
Khuyên dùng: Luôn dùng return 0; (hoặc return EXIT_SUCCESS;) trong main(). Chỉ dùng exit() ở các hàm khác khi cần thoát khẩn cấp.