Bài 3: Sử dụng namespace trong C++

Nếu đã từng xem qua mã nguồn C++, có lẽ bạn đã thấy ‘cout’ được sử dụng thay vì ‘std::cout’. Cả hai đều cùng chỉ đến một đối tượng: cách thứ nhất sử dụng tên không kèm tiền tố (‘cout’), trong khi cách thứ hai chỉ định rõ đối tượng đó nằm trong không gian tên (namespace) ‘std’ (thông qua tiền tố ‘std::’).

‘cout’ là một thành phần thuộc thư viện chuẩn, và tất cả các thành phần trong thư viện chuẩn C++ đều được khai báo bên trong một không gian tên gọi là ‘std’.

Để truy cập các thành phần trong namespace ‘std’, chương trình cần phải hoặc là chỉ định rõ namespace cho mỗi lần sử dụng (như cách chúng ta thêm tiền tố ‘std::’ vào trước ‘cout’), hoặc là làm cho các thành phần đó trở nên khả dụng (hiển thị) trong phạm vi chương trình. Cách phổ biến nhất để thực hiện điều này là sử dụng khai báo ‘using’:

1          using namespace std;

Khai báo trên cho phép truy cập tất cả các thành phần bên trong namespace ‘std’ mà không cần thêm tiền tố ‘std::’.

Với cách hiểu này, ví dụ trước đó có thể được viết lại bằng cách sử dụng ‘cout’ mà không cần tiền tố, như sau:

// chương trình C++ thứ hai của tôi

#include <iostream>

using namespace std;

int main ()

{

cout << “Hello World! “;

cout << “I’m a C++ program”;

}

Kết quả => Hello World! I’m a C++ program Cả hai cách truy cập các thành phần trong namespace ‘std’ (chỉ định rõ namespace hoặc sử dụng khai báo `using`) đều hợp lệ trong C++ và mang lại kết quả thực thi hoàn toàn giống nhau. Để đơn giản hóa và tăng tính dễ đọc, các ví dụ trong loạt bài hướng dẫn này thường sử dụng cách thứ hai (khai báo ‘using’). Tuy nhiên, cần lưu ý rằng việc chỉ định rõ namespace (sử dụng tiền tố ‘std::’) là cách duy nhất để đảm bảo tuyệt đối rằng không xảy ra xung đột tên (name collision).

Leave a comment