Namespace Là Gì

     

Khi vẫn lập trình vào một file A bạn include 2 file B và C, nhưng lại 2 file này còn có cùng tư tưởng một hàm function() giống như nhau về tên với tham số truyền vào, nhưng giải pháp xử lý của mỗi hàm ở mỗi tệp tin là không giống nhau, vấn đề đặt ra là code làm sao để trình biên dịch đọc được lúc nào bạn muốn gọi function của file B, lúc nào bạn muốn gọi function của tệp tin C.Khi điện thoại tư vấn hàm function() ở file A, trình biên dịch sẽ không biết được hàm function() bạn muốn gọi là hàm được quan niệm ở file B hay file C. Vị vậy trình biên dịch lịch trình sẽ báo lỗi.

Bạn đang xem: Namespace là gì

Đang xem: Namespace là gì

fileB.hpp:

#include using namespace std;void function() { cout fileC.hpp:

#include using namespace std;void function(() { cout fileA.hpp:

#include #incldue “fileB.hpp”#include “fileC.hpp”using namespace std;int main() function(); return 0;Trình biên dịch báo lỗi:

In file included from fileA.cpp:3:0:fileC.hpp: In function ‘void function()’:fileC.hpp:5:6: error: redefinition of ‘void function()’ void function(){ cout —> Namespace sẽ xử lý chọn vẹn vụ việc này!

Định nghĩa:

Namespace là từ bỏ khóa vào C++ được áp dụng để định nghĩa một phạm vi nhằm mục đích phân biệt những hàm, lớp, biến, … thuộc tên trong số thư viện không giống nhau.

2. Lý do cần áp dụng namespace?

Trong các project lớn, sẽ sở hữu các hàm, lớp, … thuộc tên được định nghĩa, mà lại nội dụng khác nhau (giống như vd bên trên phần 1). Một trong những trường hợp này bắt buộc đặt các hàm, lớp, … này vào các amespace khác biệt để trình biên dịch hoàn toàn có thể phân biệt được, cũng giống như việc tường minh code cho những người cần gọi và thực hiện sau đó.

Xem thêm: Tinh Chất Essence Là Gì ? Tác Dụng Của Essence Đối Với Làn Da


3. Sử dụng namespace

Cú pháp:

namespace ten_namespace //codeTiếp tục vd ở chỗ 1 khi thực hiện namespace.fileB.hpp:

#include using namespace std;namespace fileB{ void function(() { cout fileC.hpp:

#include using namespace std;namespace fileC{ void function(() { cout fileA.hpp:

#include #incldue “fileB.hpp”#include “fileC.hpp”using namespace std;int main() fileB::function(); fileC::function(); return 0;Kết quả:

function fileB running.function fileC running.– Khai báo Namespace:

Khi bạn cảm thấy việc gọi hàm thông qua gọi tên của namespace là dài mẫu và không cần thiết, vào trường thích hợp này chúng ta cũng có thể sử dụng từ bỏ khóa khai báo namespace nhằm sử dụng.

Xem thêm: Bảng Tính Tan Của Muối Nào Sau Đây Tan Tốt, Dãy Các Muối Nào Sau Đây Tan Trong Nước

using namespace ten_namespace;Khi khai báo như này bạn có thể gọi trực tiếp những hàm, … được có mang trong namespace. Các bạn sẽ thấy thân quen hơn trong vấn đề khai báo áp dụng namespace std.fileB.hpp:

#include using namespace std;namespace fileB{ Void function(() { cout fileA.hpp:

#include #incldue “fileB.hpp”Using namespace std;Using namespace fileB;Int main() function(); return 0;

4. Ngôi trường hợp đặc biệt

a. Namespace ko kề nhau

Là 1 namespace dẫu vậy được định nghĩa ở những file không giống nhau.

Vd:fileB.hpp:

#include using namespace std;namespace file{ void function1() { cout fileC.hpp:

#include using namespace std;namespace file{ void function2(() { cout fileA.hpp:

#include #include “fileB.hpp”#include “fileC.hpp”using namespace std;using namespace file;int main() function1(); function2(); return 0;

b. Namespace lồng nhau

Có nghĩa là các bạn định nghĩa một namespae trong một namespace khác.Namespace parent_namespace //code Namespace child_namespace //code