ทุกสิ่งที่คุณต้องการรู้เกี่ยวกับเนมสเปซใน C ++



บทความนี้จะให้ความรู้เกี่ยวกับ Namespace ใน C ++ โดยละเอียดและครอบคลุม ประเภทต่างๆและการใช้งานในโปรแกรมใด ๆ

Namespace ใน C ++ ใช้เพื่อจัดระเบียบโค้ดให้เป็นกลุ่มตรรกะและเพื่อป้องกันการชนกันของชื่อที่อาจเกิดขึ้นโดยเฉพาะอย่างยิ่งเมื่อ codebase ของคุณมีหลายไลบรารี ในบทความนี้คำแนะนำต่อไปนี้จะครอบคลุม:

ความต้องการเนมสเปซ

ลองพิจารณาสถานการณ์เรากำลังเขียนโค้ดบางตัวที่มีฟังก์ชันชื่อ abc () และมีไลบรารีที่กำหนดไว้ล่วงหน้าอีกอันหนึ่งซึ่งมีฟังก์ชันเดียวกัน abc () ตอนนี้ในช่วงเวลาของการคอมไพเลอร์คอมไพเลอร์ไม่มีเบาะแสว่าฟังก์ชัน abc () รุ่นใดที่เราอ้างถึงภายในโค้ดของเรา





เนมสเปซใน c ++

เพื่อเอาชนะเนมสเปซที่ยากลำบากนี้ได้รับการออกแบบและใช้เป็นข้อมูลเพิ่มเติมเพื่อแยกความแตกต่างของฟังก์ชันตัวแปรคลาส ฯลฯ ที่คล้ายคลึงกันโดยมีชื่อเดียวกันในไลบรารีต่างๆ การใช้เนมสเปซเราสามารถกำหนดบริบทที่กำหนดชื่อได้ โดยพื้นฐานแล้วเนมสเปซกำหนดขอบเขต



ประเภทและฟังก์ชันไลบรารีมาตรฐาน C ++ ทั้งหมดถูกประกาศในเนมสเปซมาตรฐานหรือเนมสเปซที่ซ้อนอยู่ภายใน std ดังนั้นจึงถูกใช้กันอย่างแพร่หลายในโปรแกรมส่วนใหญ่

การกำหนดเนมสเปซ

ในการกำหนดเนมสเปซเราเริ่มต้นด้วยคีย์เวิร์ดเนมสเปซตามด้วยชื่อเนมสเปซดังนี้:

โครงสร้างข้อมูลและอัลกอริทึมใน java
namespace namespace_name {int a, b // code declarations โดยที่ // a และ b ถูกประกาศใน // namespace_name's scope}

จุดที่ต้องจำขณะกำหนดเนมสเปซ

  • การประกาศ Namespace ปรากฏเฉพาะในขอบเขตส่วนกลาง
  • การประกาศ Namespace ไม่มีตัวระบุการเข้าถึง
  • การประกาศเนมสเปซสามารถซ้อนกันภายในเนมสเปซอื่น
  • ไม่จำเป็นต้องให้เครื่องหมายอัฒภาคหลังวงเล็บปีกกาปิดของนิยามของเนมสเปซ
  • คำจำกัดความของเนมสเปซสามารถแบ่งออกเป็นหลายหน่วยได้
#include using namespace std namespace first_function {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 }

เอาท์พุต:



ในตัวอย่างข้างต้นเพื่อกำหนดฟังก์ชัน func () สองครั้งที่แตกต่างกันเราใช้แนวคิดเนมสเปซ เรากำหนดฟังก์ชันแรกภายใต้ namespace first_function และฟังก์ชันที่สองภายใต้ namespace second_function ในการเรียกใช้ฟังก์ชันเหล่านี้เราใช้ตัวดำเนินการความละเอียดขอบเขตในลักษณะต่อไปนี้ - first_function :: func () และ second_function :: func ()

java สำหรับตัวอย่างโปรแกรมลูป

การใช้ Namespace ใน C ++

มีสามวิธีในการใช้เนมสเปซในโปรแกรม

  1. คำสั่งการใช้
  2. การประกาศใช้
  3. ตัวดำเนินการแก้ไขขอบเขต (: :)

คำสั่งการใช้

เราสามารถหลีกเลี่ยงการเติมเนมสเปซล่วงหน้าด้วยนามสกุล โดยใช้ คำสั่งเนมสเปซ โดยใช้ คำหลักช่วยให้เราสามารถนำเข้าเนมสเปซทั้งหมดไปยังโปรแกรมของคุณได้โดยมีขอบเขตทั่วโลก สามารถใช้เพื่อนำเข้าเนมสเปซไปยังเนมสเปซอื่นหรือโปรแกรมใด ๆ ตามความต้องการของเรา

พิจารณาไฟล์ส่วนหัว Namespace_first.h:

เนมสเปซขั้นแรก {int a class First_class {int i}}

การรวมไฟล์ส่วนหัวเนมสเปซด้านบนในไฟล์ Namespace_second.h: รวม“ Namespace_first.h”

เนมสเปซวินาที {using namespace First First_class obj int y}

เรานำเข้า namespace_First ไปยัง namespace_Second ดังนั้นคลาส First_class จะพร้อมใช้งานใน namespace_Second ดังนั้นเราสามารถเขียนโปรแกรมต่อไปนี้ในไฟล์แยกต่างหากสมมติว่า new_file.cpp

#include 'Namespace_second.h' void test () {ใช้เนมสเปซวินาที // การสร้างอ็อบเจกต์ของคลาส First_class First_class obj2}

ดังนั้น คำสั่งการใช้งานช่วยให้ใช้เนมสเปซใน C ++ ได้ง่ายขึ้นมากทุกที่ที่คุณต้องการ

การประกาศใช้

ในการประกาศใช้เรานำเข้าชื่อเฉพาะทีละชื่อซึ่งมีให้เฉพาะในขอบเขตปัจจุบันและเรียกด้วยความช่วยเหลือของการแก้ไขขอบเขต หมายเหตุ: ชื่อที่นำเข้าโดยใช้คำประกาศสามารถแทนที่ชื่อที่นำเข้าโดยใช้คำสั่ง เราสามารถดูสิ่งนี้ได้จากตัวอย่างด้านล่าง

ให้เราพิจารณาไฟล์ส่วนหัว New_File.h:

เนมสเปซแรก {โมฆะ A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

ตอนนี้เรามาสร้างไฟล์โปรแกรมใหม่ชื่อ New_file_2.cpp พร้อมรหัสด้านล่าง:

#include 'New_file.h' เป็นโมฆะ B () {ใช้เนมสเปซก่อน // ใช้คำสั่งโดยใช้วินาที :: A // โดยใช้การประกาศ First :: A () // class A () ของ First namespace A () // เรียก A () ของเนมสเปซที่สอง}

ตัวดำเนินการความละเอียดขอบเขต (: :)

เราสามารถระบุชื่อใด ๆ ที่ประกาศในเนมสเปซอย่างชัดเจนโดยใช้ชื่อของเนมสเปซและการแก้ไขขอบเขต ' :: ' ตัวดำเนินการที่มีตัวระบุ

เนมสเปซ New_space {คลาส X {static int i public: void func ()} // คลาสการประกาศชื่อคลาส Y} // การเริ่มต้นตัวแปรคลาสคงที่ int New_space :: X :: i = 23 คลาส New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

เนมสเปซที่ไม่ชัดเจนใน C ++

ดังที่เราทราบดีว่าเนมสเปซใน C ++ สามารถกำหนดได้หลายส่วนดังนั้นจึงประกอบด้วยผลรวมของส่วนที่กำหนดแยกกัน ดังนั้นหากส่วนหนึ่งของเนมสเปซต้องการชื่อที่กำหนดในไฟล์อื่นชื่อนั้นจะต้องถูกประกาศในขอบเขตของมัน การเขียนเนมสเปซต่อไปนี้ในลักษณะต่อไปนี้เป็นการกำหนดเนมสเปซใหม่หรือเพิ่มองค์ประกอบใหม่ให้กับเนมสเปซที่มีอยู่:

sqoop in hadoop คืออะไร
เนมสเปซ namespace_name {// code body}

เนมสเปซที่ซ้อนกันใน C ++

เนมสเปซสามารถซ้อนกันได้อย่างง่ายดายและเราสามารถกำหนดหนึ่งเนมสเปซภายในเนมสเปซอื่นได้ดังนี้:

namespace namespace_name1 {// code body ของ namespace_name1 namespace namespace_name2 {// code body ซ้อนกัน namamespace_name2}}

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของ Namespace ในบทความ C ++ ฉันหวังว่าคุณจะเข้าใจว่าเนมสเปซใน C ++ คืออะไรและอะไรคือวิธีการต่างๆในการกำหนด หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด