Chúng có nghĩa là những thứ khác nhau. Trong ngữ cảnh class
, static
có nghĩa là các phương pháp không yêu cầu đối tượng phải hành động, vì vậy, giống như các chức năng miễn phí hơn. Trong một bối cảnh namespace
, nó có nghĩa là các chức năng có liên kết nội bộ như vậy là duy nhất cho các đơn vị dịch thuật mà chúng được định nghĩa trong.
Bên cạnh đó, các thành viên của một class
là tin theo mặc định như vậy, như viết, chức năng lớp học của bạn chỉ có thể gọi được từ nhau. Bạn cần phải thêm thông số truy cập public:
hoặc tạo class
a struct
để thay đổi điều này.
Nếu bạn cần một loạt các chức năng miễn phí và không cần đối tượng lớp thì có thể phù hợp hơn để xác định chúng là các hàm không phải là static
trong không gian tên. Nếu chúng được xác định trong dòng trong tệp tiêu đề, thì chúng thường cần được khai báo inline
. Điều này được ngụ ý nếu chúng được xác định trong một class
.
Nguồn
2009-08-26 06:17:57
Cảm ơn, tôi đang viết một số thói quen helper để lấy thông tin hệ thống từ phân tích cú pháp/proc fs, những thói quen helper không thực sự đòi hỏi một hiệp hội với lớp, trong yêu cầu của tôi nó làm cho cảm giác sử dụng không gian tên. Mọi thứ có thể đã thay đổi nếu tôi muốn ẩn vài trong số các thói quen trợ giúp này, mà các trình trợ giúp khác gọi nhưng không được tiếp xúc, trong trường hợp đó tôi có thể có cách tiếp cận lớp ưu tiên. – harishvk27