Nếu bạn là lập trình viên, bạn viết mã; nếu viết mã, bạn dùng hàm; nếu dùng hàm, bạn dùng câu lệnh return và exit trong mọi hàm. Vì vậy trong bài viết này, ta sẽ thảo luận câu lệnh return và exit là gì và sự khác biệt của chúng.
Trong C++,
- return là câu lệnh trả về quyền điều khiển luồng thực thi cho hàm đang gọi.
- Câu lệnh Exit kết thúc chương trình tại điểm nó được sử dụng.
int main()
Đây là nơi bắt đầu thực thi chương trình. Chương trình được thực thi từ hàm main(), và vì ta có int ở vị trí kiểu trả về, nó phải trả về giá trị nguyên. Ta có thể nói số nguyên này đại diện cho trạng thái chương trình, trong đó 0 có nghĩa là chương trình thực thi thành công. Giá trị khác 0 có nghĩa là có lỗi thực thi trong mã.
Câu lệnh return trong hàm main()
Câu lệnh return luôn trả về quyền điều khiển luồng cho hàm đang gọi. Return dùng mã thoát là giá trị int, để trả về cho hàm gọi. Sử dụng return trong hàm main có nghĩa là thoát chương trình với mã trạng thái; ví dụ, return 0 có nghĩa là trả về mã trạng thái 0 cho hệ điều hành. Hãy xem chương trình C++ dùng câu lệnh return.
Ví dụ
#include <iostream> using namespace std; class Test { public: // Để kích hoạt Constructor Test() { cout<<"Hey this is Return Constructor \n"; } // Để kích hoạt Destructor ~Test() { cout<<"Hey this is return Destructor"; } }; int main() { // Tạo đối tượng lớp Test Test object; // Sử dụng return trong main return 0; }Kết quả
Hey this is Return Constructor Hey this is return Destructor
Nhìn chương trình trên, ta có thể nói return gọi constructor và destructor của đối tượng lớp. Gọi destructor là cần thiết để giải phóng bộ nhớ đã cấp phát.
Câu lệnh Exit() trong hàm main
Câu lệnh Exit() kết thúc chương trình tại điểm nó được dùng. Khi từ khóa exit dùng trong hàm main, nó sẽ thoát chương trình mà không gọi destructor cho các đối tượng cục bộ. Bất kỳ đối tượng được tạo nào sẽ không bị hủy và không giải phóng bộ nhớ; nó chỉ đơn giản kết thúc chương trình.
Ví dụ
#include <iostream> using namespace std; class Test { public: // Để kích hoạt Constructor Test() { cout<<"Hey this is exit Constructor \n"; } // Để kích hoạt Destructor ~Test() { cout<<"Hey this is exit Destructor"; } }; int main() { // Tạo đối tượng lớp Test Test object; // Sử dụng exit() trong main exit(0); }Kết quả
Hey this is exit Constructor
Nhìn kết quả chương trình, ta có thể kết luận dùng từ khóa exit trong chương trình có nghĩa là nó sẽ không gọi destructor để hủy bộ nhớ đã cấp phát và các đối tượng cục bộ.
Kết luận
Trong bài viết này, ta hiểu sự khác biệt giữa câu lệnh return và exit. Ta có thể kết luận từ sự khác biệt rằng việc dùng chúng tạo ra nhiều khác biệt trong chương trình. Việc dùng exit thay vì return đòi hỏi sự cẩn trọng. Tuy nhiên, chúng không ảnh hưởng nhiều trên một trang mã nhưng ảnh hưởng rất lớn khi phát triển phần mềm. Hy vọng bạn thấy bài viết hữu ích.