2011-12-18 42 views
6

Tôi có một yêu cầu trong đó biến (const) sẽ có sẵn trong toàn bộ cpp, bao gồm một số lớp. Tôi đã quyết định sử dụng không gian tên để giải quyết vấn đề, nhưng không chắc chắn về những điều sau đây:Không gian tên C++ và biến tĩnh

  • Tôi có cần xác định biến này là tĩnh không?
  • Có đúng là tôi có thể tránh biến tĩnh chỉ khi tôi đi với một không gian tên không tên?
+0

Bạn đã cố gắng khai báo nó ở trên cùng, bên ngoài lớp/chức năng? (không có tĩnh ofc) – neeKo

+2

Có lý do nào bạn muốn tránh làm cho nó tĩnh? – tpg2114

+1

Nếu nó là 'const', nó cũng hoàn toàn tĩnh. Bạn phải sử dụng 'extern const' để làm cho nó không tĩnh. –

Trả lời

6
  1. Bạn không cần để xác định các biến như tĩnh, hoặc trong một không gian tên vô danh. Tuy nhiên, nếu bạn không sử dụng đối tượng này bên ngoài tệp được xác định trong đó, bạn nên giảm ô nhiễm không gian tên và tăng tốc các liên kết (bằng cách giảm số lượng ký hiệu cần được xem xét bởi trình liên kết).
  2. Nếu bạn khai báo một biến trong một không gian tên ẩn danh, nó sẽ có hiệu quả tĩnh. Không cần phải thực sự làm cho nó tĩnh là tốt (mặc dù bạn có thể nếu bạn thích). Lợi thế của các không gian tên ẩn danh là bạn cũng có thể định nghĩa các kiểu (các lớp, các cấu trúc, các enum, typedef) cũng như các biến và hàm tĩnh.
+0

Cảm ơn, điều đó rất rõ ràng. –

Các vấn đề liên quan