Tôi đã đọc Qt ước mã hóa tài liệu và đến khi đoạn như sau:C++ tĩnh toàn cầu phi POD: lý thuyết và thực hành
Bất cứ điều gì mà có một nhà xây dựng hoặc cần phải chạy mã được khởi tạo có thể không được sử dụng như là đối tượng toàn cầu trong mã thư viện, vì nó không được định nghĩa khi hàm khởi tạo/mã đó sẽ được chạy (lần đầu tiên sử dụng, trên tải thư viện, trước chính() hoặc không phải ở tất cả). Ngay cả khi thời gian thực hiện của bộ khởi tạo được xác định cho thư viện được chia sẻ, bạn sẽ gặp rắc rối khi di chuyển mã đó trong plugin hoặc nếu thư viện được biên dịch tĩnh.
Tôi biết những gì theory nói, nhưng tôi không hiểu phần "không hề". Đôi khi tôi sử dụng không phải POD const toàn cầu statics (ví dụ: QString) và nó không bao giờ xảy ra với tôi rằng họ có thể không được khởi tạo ... Điều này cụ thể cho các đối tượng chia sẻ/DLLs? Điều này có xảy ra với các trình biên dịch bị hỏng không?
Bạn nghĩ gì về quy tắc này?
QString của bạn có thể không được khởi tạo nếu bạn không sử dụng chúng. Nhưng nếu bạn sử dụng chúng, chúng sẽ được khởi tạo. Ngay cả khi điều này chỉ là trước khi sử dụng (tức là ngay trước khi một mthod được gọi trên đối tượng). –