Computer >> Máy Tính >  >> Lập trình >> C ++

Một đối tượng được lưu trữ ở đâu nếu nó được tạo bên trong một khối trong C ++?


Trong phần này chúng ta sẽ thảo luận về nơi các biến và đối tượng được lưu trữ trong bộ nhớ khi một chương trình C ++ được biên dịch. Như chúng ta đã biết, có hai phần bộ nhớ trong đó một đối tượng có thể được lưu trữ -

  • Ngăn xếp - Tất cả các thành viên được khai báo bên trong khối bộ nhớ, nó lưu trữ bên trong phần ngăn xếp. Hàm chính cũng là một hàm, vì vậy các phần tử bên trong nó sẽ được lưu trữ bên trong ngăn xếp.

  • Heap - Khi một số đối tượng được cấp phát động, thì đối tượng đó sẽ được lưu trữ bên trong phần heap.

Phạm vi của đối tượng được khai báo bên trong một khối hoặc một hàm được giới hạn trong khối mà nó được tạo ra. Đối tượng sẽ được lưu trữ trong ngăn xếp khi nó được tạo bên trong khối và khi điều khiển thoát khỏi khối hoặc chức năng thì đối tượng sẽ bị xóa hoặc hủy.

Trong trường hợp các đối tượng được cấp phát động (trong thời gian chạy) đối tượng sẽ được lưu trữ trên heap. Điều này được thực hiện với sự trợ giúp của nhà điều hành mới. Để phá hủy đối tượng đó, chúng ta phải sử dụng từ khóa del để hủy nó một cách rõ ràng.

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

 #include  using namespace std; class Box {int width; int length; public:Box (int length =0, int width =0) {this-> length =length; this-> width =chiều rộng; } ~ Box () {cout <<"Hộp đang phá hủy" < get_len () < get_width () < get_len () < get_width () < 

Đầu ra

 Kích thước hộp là:Chiều dài:2 Chiều rộng:3 Hộp đang phá hủy Thoát khối, trình hủy Tự động gọi đối tượng được lưu trữ trong ngăn xếp .----------------------- ---------------------------- Kích thước hộp 2 là:length:5width:6Box là phá hủy chiều dài của box2:0 width của box2:0