Đối với tôi, việc sử dụng từ khóa static
trong C và các ngôn ngữ như C # và Java là "những người bạn giả" như "trở thành" trong tiếng Anh và "bekommen" trong tiếng Đức (= "to get" trong tiếng Anh), vì chúng có nghĩa là những thứ khác nhau.
Trong C static
có nghĩa là, hàm hoặc biến chỉ có thể truy cập thông qua các hàm bên trong cùng một tệp nguồn, có thể so sánh với các private
hàm và thành viên trong C ++, Java và C #.
Trong C ++, Java và C # static
có nghĩa là các phương thức không phải là thành viên của một thể hiện của lớp, nhưng thực tế là ít nhiều giống như các hàm C cộng với không gian tên.
IMHO hai khái niệm này khá khác nhau, vậy tại sao các nhà thiết kế của C ++ và Java và C # sau đó lại chọn static
từ khóa cho hành vi đó? Có một kết nối hợp lý mà tôi bỏ lỡ?
EDIT
Tôi biết rằng, static
trong C không chi phối khả năng truy cập theo cách tương tự như private
trong C ++, nhưng có thể được sử dụng theo cách đó, xem https://stackoverflow.com/a/1479639/124983