Const và static là những khái niệm trực giao trong cả C và C ++.
Các const
từ khóa cho trình biên dịch để không cho phép biến xuất hiện như vế trái của bất kỳ biểu hiện - về cơ bản làm cho nó read-only.
Trong C, static
từ khóa có một số cách sử dụng tùy thuộc vào những gì nó được áp dụng. Khi được áp dụng cho một biến của một hàm, nó chỉ ra rằng biến đó không được lưu trữ trong phạm vi cục bộ của một hàm, nhưng có thể truy cập được qua các lệnh gọi của nó. Khi được áp dụng cho một biến hoặc hàm toàn cục, nó chỉ có thể truy cập được đối với một tệp cụ thể - nói cách khác, nó chỉ có thể truy cập được trong đơn vị biên dịch (trừ khi được khai báo extern
).
Trong C ++, static
từ khóa có thể được sử dụng trong định nghĩa lớp, để tạo một biến hoặc các hàm được chia sẻ trên tất cả các trường hợp của lớp, thay vì cục bộ cho mỗi trường hợp. Hơn nữa, một hàm lớp tĩnh trong C ++ chỉ có thể truy cập các biến tĩnh của lớp đó (hoặc các lớp mà nó có quyền truy cập). Bây giờ, trong C ++ const
cung cấp cho các thành viên liên kết nội bộ với đơn vị biên dịch trừ khi chúng được khai báo rõ ràng extern
- đây có thể là những gì bạn đang đề cập đến nó. Điều này cho phép các hằng số thời gian biên dịch được chia sẻ giữa các đơn vị thông qua việc sử dụng các tệp tiêu đề. Tuy nhiên, hãy nhớ rằng các thành viên không thực sự tĩnh - đúng hơn là hằng số được biên dịch vào từng vị trí nơi nó được tham chiếu.