4.4.4 Sử dụng một name space

Nếu bất kỳ name space sẵn có nào có thể sử dụng được hoặc phù hợp hơn nó có thể được sử dụng theo cách gợi ý cho trình biên dịch hãy cố gắng phân biệt mỗi cái tên sử dụng name space đó (có thể có nhiều hơn một name space loại này).

Hành động sử dụng name space đã chọn được thực hiện bằng cách sử dụng câu lệnh: using namespace. Nếu câu lệnh được đặt bên ngoài khối bất kỳ, nó sẽ ảnh hưởng đến mã sau câu lệnh cho đến khi kết thúc tệp nguồn.

Ví dụ bên này →

cho thấy trường hợp khi hai câu lệnh “using namespace” đã được chỉ định trong cùng một mã. Cái đầu tiên cho phép chúng ta sử dụng cout endl thuận tiện hơn. Cái thứ hai nói lên rằng bất kỳ con troll nào mà không chỉ rõ ở đâu thì sẽ thuộc về Hogwarts.

Lưu ý rằng việc sử dụng các câu lệnh using namespace có dẫn đến một tình huống mà một định danh có thể được coi là có nguồn gốc từ nhiều name space. Điều này có nghĩa là bạn không được phép sử dụng hai câu lệnh sau trong cùng một phạm vi của code:

using namespace Hogwarts;

using namespace Mordor;

Nó sẽ làm cho tất cả những chỗ sử dụng trolls đều trở nên mơ hồ. Đây không phải là điều chúng tôi muốn. Các con trolls cũng không muốn 😂


Nếu việc câu lệnh using namespace được đặt bên trong một khối, phạm vi của nó kết thúc trong cùng một nơi mà các khối kết thúc. Bạn có thể sử dụng hiệu ứng này để sử dụng có chọn lọc (và bỏ qua) namespace có sẵn.

Trong ví dụ ở bên dưới → chúng tôi đã sử dụng tất cả ba namespace có sẵn và đã thực hiện theo cách sau:

  • std chuẩn được sử dụng toàn cục (trong toàn bộ file source)
  • Hogwarts và Mordor được sử dụng có chọn lọc (trong từng phần được chọn của code)