Tôi đang sử dụng khai báo 'using' trong C ++ để thêm std :: string và std :: vector vào không gian tên cục bộ (để tiết kiệm việc nhập 'std ::' s không cần thiết).
using std::string;
using std::vector;
class Foo { /*...*/ };
Phạm vi trên khai báo này là gì? Nếu tôi thực hiện điều này trong tiêu đề, nó có đưa các khai báo 'sử dụng' này vào mọi tệp cpp bao gồm tiêu đề không?
usingtuyên bố (a fortiori chỉ thị ) trong một tiêu đề ở tất cả , thậm chí trong một không gian tên! Xem phạm vi sử dụng khai báo trong một không gian tên để biết các vấn đề này gây ra.
usingtrong phạm vi lớp và chức năng là an toàn liên quan đến vấn đề đã thảo luận.
usingkhai báo (hoặcusingchỉ thị) ở phạm vi tệp trong tệp / tiêu đề bao gồm! Điều đó sẽ gây đau đầu cho những người sử dụng tiêu đề.