2015-06-24 16 views

Trả lời

8

Đầu tiên (new type[0]) sẽ thực sự tạo đối tượng mảng (và do đó chiếm bộ nhớ). Bạn có thể sử dụng đối tượng mảng (0-size), ví dụ để lấy chiều dài hoặc lặp lại nó, nhưng bạn có thể, tất nhiên, không truy cập bất kỳ phần tử nào của nó. Vì vậy, bạn có thể chuyển nó cho bất kỳ hàm nào không đưa ra giả định về độ dài của mảng (nhưng thay vào đó là kiểm tra thích hợp) và nó sẽ hoạt động.

Loại thứ hai (null) không tạo bất kỳ đối tượng nào. Bạn sẽ nhận được một ngoại lệ, nếu bạn cố gắng truy cập bất kỳ thành viên nào.

-1

Bạn cần 3 bước để tạo đối tượng.

  1. Decleration type A []; -> Một sự giải mã. Khi bạn khai báo một đối tượng, bạn không chiếm bất kỳ bộ nhớ nào cho thể hiện nhưng chiếm một số bộ nhớ để tham chiếu.

  2. Instantiation Để thực hiện việc này, bạn cần từ khóa 'mới'. Khi bạn khởi tạo một đối tượng, bạn chiếm bộ nhớ.

  3. Khởi tạo Để thực hiện việc này, bạn cần hàm tạo, Giống như -> loại A [] = new A [size]; Vậy đó.

+0

Đây không phải là sự thật. Ngay cả một biến không được gán chiếm (có thể chiếm) một số bộ nhớ. Không phải bộ nhớ của cá thể, mà là bộ nhớ cần thiết cho tham chiếu. –

+0

Tất nhiên ngay cả biến không được gán chiếm một số bộ nhớ nhưng câu hỏi là tôi hiểu liệu dụ chiếm một số bộ nhớ. Xin lỗi, bạn đúng về điều đó. –

Các vấn đề liên quan