Câu hỏi:
Tại sao đối tượng chưa được khởi tạo được xây dựng trong kiểu định nghĩa bên một cơ quan chức năng đã không xác định giá trị, trong khi đối tượng được xây dựng trong kiểu định nghĩa ngoài của bất kỳ chức năng được khởi tạo 0
hoặc ''
?Tại sao các đối tượng chưa được khởi tạo của kiểu dựng sẵn được xác định bên trong một thân hàm có giá trị không xác định?
Hãy ví dụ này:
#include <iostream>
using std::cout; using std::endl;
int ia[10]; /* ia has global scope */
int main()
{
int ia2[10]; /* ia2 has block scope */
for (const auto& i : ia)
cout << i << " "; /* Result: 0 0 0 0 0 0 0 0 0 0 */
cout << endl;
for (const auto& i : ia2)
cout << i << " "; /* Result: 1972896424 2686716 1972303058 8
1972310414 1972310370 1076588592 0 0 0 */
return 0;
}
Hãy xem xét chi phí cho việc khởi tạo các hình cầu một lần so với khởi tạo người dân địa phương mỗi lần hàm được gọi. – Angew
Đây rõ ràng là ** không trùng lặp ** (ít nhất không phải là câu hỏi được liên kết). OP không hỏi * nếu * bộ nhớ toàn cục được khởi tạo nhưng thay vì * tại sao *, và cũng là lý do tại sao các biến cục bộ là * không *, cả hai đều không được trả lời trong câu hỏi được liên kết. – leemes