Hôm nay tôi thấy mình tạo ra một mảng tĩnh gồm 2 ints, và vì initalization nội tuyến của nó không được cho phép trong C++ (không phải C++ 11), tôi đã hoàn nguyên sử dụng biến tĩnh của struct type.Cấu trúc tĩnh với các thành viên tĩnh
class MyWidget {
...
static const struct Margin {
const int horizontal = 1;
const int vertical = 1;
} margin;
};
Tôi nhận thấy rằng biến nội bộ chỉ được sử dụng một lần cho tất cả các trường hợp của cấu trúc Margin, vì vậy tôi quyết định làm cho chúng tĩnh quá.
class MyWidget {
...
static const struct Margin {
static const int horizontal = 1;
static const int vertical = 1;
} margin;
};
Điều kỳ diệu tôi là sự khác biệt giữa khai báo biến cấu trúc tĩnh so với biến cấu trúc tĩnh với thành viên tĩnh. Các đối tượng tĩnh AFAC chỉ được cấp phát một lần trong bộ nhớ, do đó cấu trúc Margin struct chỉ được phân bổ một lần cho dù thành viên của tôi có tĩnh hay không.
Tôi có bỏ lỡ điều gì đó không? Liệu có tồn tại một sự khác biệt hay chỉ là một đường cú pháp?
Không có thứ gì như "cấu trúc tĩnh" trong C++, tĩnh là bộ lưu trữ lớp lưu trữ và áp dụng cho các biến hoặc hàm, không phải kiểu. – PlasmaHH
Bạn không nên quay trở lại sử dụng cấu trúc với các thành viên được đặt tên thay vì một mảng các phần tử chưa được đặt tên .. nó phải là cách khác xung quanh .. –
Tôi đã googled một chút và dường như tôi không thể tìm thấy kết quả có ý nghĩa "cấu trúc tĩnh". Bạn có lẽ đến từ thế giới C#? – antonijn