NAMESPACE LÀ GÌ???
Chắc các bạn đã quá quen với thuật ngữ namespace, vì gần như trong bất cứ chương trình C++ nào các bạn cũng dùng đến câu lệnh “using namespace std;”. Vậy namespace là gì, và tại sao lại có câu lệnh trên trong hầu hết các chương trình của chúng ta?
Namespace (tạm dịch là không gian tên) là một cơ chế trong C++ cho phép chúng ta phân nhóm các thực thể như class, object, function thành những nhóm riêng biệt, mỗi nhóm đó được đặt cho một cái tên, gọi là không gian tên (namespace).
Ví dụ mình có namespace N, trong đó mình định nghĩa class C, object o và function f. Khi đó, mình có thể tham chiếu đến các thực thể này bằng cách viết N::C, N::o hay N::f. Điều này giúp cho chúng ta có thể phân biệt được các thực thể cùng tên nằm trong các namespace khác nhau. Chẳng hạn trong namespace N1 có class C, trong namespace N2 cũng có class C, khi đó ta có thể thể hiện rõ ra được là chúng ta đang ám chỉ đến class nào bằng cách viết tường minh N1::C hay N2::C.
Mỗi namespace có thể chứa trong đó một hay một số namespace khác, giống như một package có thể chứa các package khác trong ngôn ngữ Java. Điều này cho phép chúng ta định nghĩa ra những cấu trúc namespace phức tạp theo kiểu cây, và khi đó, khi cần tham chiếu đến một thực thể nào đó, ta sẽ viết theo kiểu: vehicles::cars::toyota::corolla::altis_2012 chẳng hạn.
Trong ngôn ngữ C++, người ta định nghĩa ra một số lượng lớn class, object, function mà lập trình viên hay dùng đến, và đặt chúng trong một namespace có tên là ‘std’ (viết tắt của standard). Một trong những thực thể quen thuộc nhất trong namespace std chính là đối tượng “cout”. Đối tượng này cho phép chúng ta hiển thị dữ liệu ra màn hình console (standard output) bằng toán tử <<. Ví dụ ta in dòng chữ “Hello World” ra màn hình bằng câu lệnh “std::cout << “Hello World”;”.
Mỗi khi phải tham chiếu đến một object, chúng ta cần chỉ rõ nó thuộc namespace nào để tránh nhầm lẫn. Tuy nhiên, C++ cho phép lập trình viên có một tiện ích đó là chỉ ra namespace mặc định mà người đó sẽ dùng trong phạm vi file .cpp mà người đó đang thao tác. Để làm điều đó, lập trình viên cần khai báo câu lệnh “using namespace abc;” ở ngay đầu file, trong đó ‘abc’ là tên của namespace anh ta muốn trở thành namespace mặc định. Chẳng hạn câu khai báo quen thuộc “using namespace std” sẽ cho phép chúng ta đặt namespace std làm mặc định và khi tham chiếu đến các thực thể trong đó thì không cần có tiền tố std:: ở phía trước nữa. Và vì vậy, câu lệnh in dòng chữ ra màn hình của chúng ta trở thành “cout << “Hello World”;”
Hãy viết, biên dịch và chạy thử hai chương trình sau xem kết quả có giống nhau không nhé:
//-------------- Program A --------------------------
#include <iostream>
int main () {
std::cout << "Hello World";
return 0;
}
//------------------------------------------------------
//--------------- Program B -------------------------
#include <iostream>
using namespace std;
int main () {
cout << "Hello World";
return 0;
}
//------------------------------------------------------
Chúc các bạn có những giây phút thú vị với ngôn ngữ lập trình C++.
Hãy share bài viết nếu bạn cảm thấy nó có ích nhé! Cảm ơn các bạn rất nhiều!
Nguồn: https://www.facebook.com/vietnamesecplusplus/posts/142447385937332
[quote=“NotFound, post:12, topic:613”]
lên google search namespace std là hiểu rỏ bạn à!
[/quote] Chuẩn đấy. Theo mình thì nên google trước nhé