ในส่วนนี้เราจะมาดูกันว่าอะไรคือความแตกต่างระหว่างเนมสเปซและคลาสใน C++ เนมสเปซและคลาสเป็นสองแนวคิดที่แตกต่างกัน คลาสเป็นประเภทข้อมูล คลาสนั้นเป็นเวอร์ชันเสริมของโครงสร้างโดยทั่วไป คลาสสามารถมีสมาชิกข้อมูลและฟังก์ชันเป็นสมาชิกได้ แต่เนมสเปซสามารถมีตัวแปรและฟังก์ชันได้โดยการจัดกลุ่มให้เป็นหนึ่งเดียว
ไม่สามารถสร้างเนมสเปซเป็นวัตถุได้ แนวคิดนี้ใช้เป็นข้อมูลเพิ่มเติมเพื่อแยกความแตกต่างของฟังก์ชัน คลาส ตัวแปร ฯลฯ ที่คล้ายกัน ตัวแปร ฟังก์ชันที่มีชื่อเดียวกันสามารถวางในเนมสเปซที่ต่างกันได้
ตอนนี้ ให้เราชี้ให้เห็นความแตกต่างที่สำคัญของเนมสเปซและคลาส
-
เนมสเปซถูกใช้เพื่อสร้างกลุ่มของตัวระบุเพื่อไม่ให้เกิดการปะทะกัน โดยใช้คลาส เราต้องสร้างอินสแตนซ์ของคลาสนั้น แต่สำหรับเนมสเปซ สิ่งนี้ไม่เป็นความจริง
-
สำหรับเนมสเปซเราใช้การประกาศ 'โดยใช้' สำหรับชั้นเรียนนั้นเป็นไปไม่ได้ เว้นแต่ว่าเราจะได้รับจากมัน
-
เราสามารถเปิดเนมสเปซอีกครั้งและเพิ่มองค์ประกอบในหน่วยการแปล ไม่สามารถทำได้โดยใช้คลาส
namespace my_namespace { int function1(); } namespace my_namespace { int function1(); }
-
สำหรับคลาส รหัสต่อไปนี้ใช้ไม่ได้:
class my_class { int function1(); }; class my_class { int function1(); };
-
เราสามารถใช้เนมสเปซที่ไม่มีชื่อได้ ไม่เป็นไร แต่เราไม่สามารถใช้คลาสที่ไม่มีชื่อ ซึ่งจะสร้างข้อผิดพลาดได้
namespace{ //Legal int function1(); }; class { //create error int function1(); };