Mọi thứ bạn cần biết về không gian tên trong C ++



Bài viết này sẽ cung cấp cho bạn kiến ​​thức chi tiết và toàn diện về Namespace trong C ++. Đó là nhiều loại và Sử dụng trong bất kỳ Chương trình nào.

Không gian tên trong C ++ được sử dụng để tổ chức mã thành các nhóm logic và ngăn chặn xung đột tên có thể xảy ra, đặc biệt khi cơ sở mã của bạn bao gồm nhiều thư viện. Trong bài viết này, các điểm sau sẽ được đề cập:

Sự cần thiết của Không gian tên

Hãy xem xét một tình huống, chúng ta đang viết một số mã có một hàm được gọi là abc () và có một thư viện được xác định trước khác cũng có cùng hàm abc (). Bây giờ tại thời điểm biên dịch, trình biên dịch không có manh mối phiên bản nào của hàm abc () mà chúng tôi đang đề cập đến trong mã của chúng tôi.





Không gian tên trong c ++

Để khắc phục khó khăn này, không gian tên được thiết kế và được sử dụng làm thông tin bổ sung để phân biệt các hàm, biến, lớp, v.v. tương tự có cùng tên có sẵn trong các thư viện khác nhau. Sử dụng không gian tên, chúng ta có thể xác định ngữ cảnh mà các tên được định nghĩa. Về bản chất, một không gian tên xác định một phạm vi.



Tất cả các kiểu và hàm thư viện chuẩn C ++ đều được khai báo trong không gian tên std hoặc không gian tên được lồng bên trong std do đó nó được sử dụng rộng rãi trong hầu hết các chương trình.

Xác định không gian tên

Để xác định không gian tên, chúng ta bắt đầu với không gian tên từ khóa theo sau là tên không gian tên như sau:

cấu trúc dữ liệu và thuật toán trong java
không gian tên namespace_name {int a, b // khai báo mã trong đó // a và b được khai báo trong // phạm vi của namespace}

Những điểm cần nhớ khi xác định không gian tên

  • Khai báo không gian tên chỉ xuất hiện ở phạm vi toàn cầu.
  • Khai báo vùng tên không có mã xác định quyền truy cập.
  • Khai báo không gian tên có thể được lồng trong một không gian tên khác.
  • Không cần đặt dấu chấm phẩy sau dấu ngoặc nhọn đóng định nghĩa vùng tên.
  • Định nghĩa không gian tên có thể được chia thành nhiều đơn vị.
#include using namespace std namespace first_ functions {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Đầu ra:



Trong ví dụ trên để xác định hàm func () hai thời điểm khác nhau, chúng ta sử dụng khái niệm không gian tên. Chúng tôi xác định hàm đầu tiên trong không gian tên first_ function vàhàm thứ hai trong không gian tên second_ function. Để gọi các hàm này, chúng ta sử dụng toán tử phân giải phạm vi theo cách sau - first_ functions :: func () và second_ functions :: func ().

talend studio mở cho hướng dẫn tích hợp dữ liệu

Sử dụng không gian tên trong C ++

Có ba cách để sử dụng không gian tên trong chương trình,

  1. Chỉ thị sử dụng
  2. Khai báo sử dụng
  3. Toán tử phân giải phạm vi (: :)

Chỉ thị sử dụng

Chúng tôi có thể tránh thêm các không gian tên với sử dụng chỉ thị không gian tên. sử dụng từ khóa cho phép chúng tôi nhập toàn bộ không gian tên vào chương trình của bạn với phạm vi toàn cầu. Nó có thể được sử dụng để nhập một không gian tên vào một không gian tên khác hoặc bất kỳ chương trình nào theo yêu cầu của chúng tôi.

Xem xét tệp tiêu đề Namespace_first.h:

không gian tên First {int a class First_class {int i}}

Bao gồm tệp tiêu đề không gian tên ở trên trong tệp Namespace_second.h: include “Namespace_first.h”

không gian tên Thứ hai {sử dụng không gian tên Thứ nhất First_class obj int y}

Chúng tôi nhập namespace_First vào namespace_Second, do đó lớp First_class bây giờ sẽ có sẵn trong namespace_Second. Do đó, chúng tôi có thể viết chương trình sau trong một tệp riêng biệt, giả sử new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Thứ hai // tạo đối tượng của lớp First_class First_class obj2}

Vì thế , chỉ thị using giúp việc sử dụng không gian tên trong C ++ dễ dàng hơn nhiều, ở bất cứ đâu bạn muốn.

Khai báo sử dụng

Trong khai báo using, chúng tôi nhập một tên cụ thể tại một thời điểm chỉ có sẵn bên trong phạm vi hiện tại và nó được gọi với sự trợ giúp của phân giải phạm vi. LƯU Ý: Tên được nhập với khai báo using có thể ghi đè tên được nhập với chỉ thị using. Chúng ta có thể thấy điều này trong ví dụ dưới đây.

Hãy để chúng tôi xem xét một tệp tiêu đề New_File.h:

không gian tên Đầu tiên {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Bây giờ, hãy tạo một tệp chương trình mới với tên New_file_2.cpp với mã bên dưới:

#include 'New_file.h' void B () {using namespace Đầu tiên // sử dụng chỉ thị using Second :: A // sử dụng khai báo First :: A () // class A () of First namespace A () // gọi A () của không gian tên thứ hai}

Toán tử phân giải phạm vi (: :)

Chúng tôi có thể chỉ định rõ ràng bất kỳ tên nào được khai báo trong không gian tên bằng cách sử dụng tên của không gian tên và giải pháp phạm vi “ :: ' toán tử với định danh.

namespace New_space {class X {static int i public: void func ()} // khai báo tên lớp class Y} // Khởi tạo biến lớp static int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Không gian tên rõ ràng trong C ++

Như chúng ta đã biết, một vùng tên trong C ++ có thể được định nghĩa thành nhiều phần do đó nó được tạo thành từ tổng các phần được xác định riêng biệt của nó. Vì vậy, nếu một phần của không gian tên yêu cầu tên được xác định trong tệp khác, tên đó vẫn phải được khai báo trong phạm vi của nó. Viết không gian tên sau theo cách sau hoặc xác định một không gian tên mới hoặc thêm các phần tử mới vào một vùng tên hiện có:

c c # c ++
không gian tên namespace_name {// code body}

Không gian tên lồng nhau trong C ++

Không gian tên có thể được lồng vào nhau một cách dễ dàng và chúng ta có thể xác định một không gian tên bên trong một không gian tên khác như sau:

không gian tên namespace_name1 {// nội dung mã của không gian tên_name1 không gian tên namespace_name2 {// nội dung mã lồng nhau namamespace_name2}}

Với điều này, chúng ta sẽ kết thúc bài viết về Không gian tên trong C ++. Tôi hy vọng bạn đã biết chính xác không gian tên trong C ++ là gì và các cách khác nhau để định nghĩa nó là gì. Nếu bạn muốn tìm hiểu thêm, hãy xem bởi Edureka, một công ty học trực tuyến đáng tin cậy. Khóa đào tạo và cấp chứng chỉ Java J2EE và SOA của Edureka được thiết kế để đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung công tác Java khác nhau như Hibernate & Spring.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của blog này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.