c ++ namespace
จินตนาการสถานการณ์เมื่อมีระดับหนึ่งชื่อซาร่านักเรียนสองคนเพื่อที่จะแยกแยะความแตกต่างอย่างชัดเจนระหว่างพวกเขาเราจะใช้ชื่อที่อยู่ด้านนอกมีการใช้ข้อมูลเพิ่มเติมบางอย่างเช่นที่อยู่บ้านของพวกเขาหรือพ่อแม่ของเขา ชื่ออื่น ๆ
สถานการณ์เดียวกันยังปรากฏอยู่ในโปรแกรมภาษา C ++ ตัวอย่างเช่นคุณอาจเขียนฟังก์ชั่นชื่อ xyz () ในห้องสมุดที่มีอยู่นอกจากนี้ยังมีฟังก์ชั่น XYZ เดียวกัน () ดังนั้นคอมไพเลอร์ไม่สามารถตรวจสอบสิ่งที่คุณกำลังใช้ xyz () ฟังก์ชัน
ดังนั้นการแนะนำของแนวคิดของnamespaces ที่ออกแบบมาเพื่อแก้ปัญหาดังกล่าวข้างต้นก็สามารถนำมาใช้เป็นข้อมูลเพิ่มเติมที่จะแยกแยะห้องสมุดที่แตกต่างกับฟังก์ชั่นที่มีชื่อเดียวกันเรียนตัวแปรและอื่น ๆใช้ namespace ที่กำหนดบริบท ในสาระสำคัญ namespace คือนิยามของช่วงที่
กำหนด namespaces
กำหนดnamespace คำหลัก namespace ตามด้วยชื่อของnamespace ที่ดังต่อไปนี้:
namespace namespace_name { // 代码声明 }
เพื่อเรียกฟังก์ชั่นหรือตัวแปรที่มี namespace คุณต้องนำหน้าด้วยชื่อของ namespace ที่ดังต่อไปนี้:
name::code; // code 可以是变量或函数
ลองมาดูวิธีนิยาม namespace สำหรับนิติบุคคลและอื่น ๆ ที่ฟังก์ชั่นตัวแปรหรือ:
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } int main () { // 调用第一个命名空间中的函数 first_space::func(); // 调用第二个命名空间中的函数 second_space::func(); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
Inside first_space Inside second_space
โดยใช้การเรียนการสอน
คุณสามารถใช้สั่งใช้ namespace เพื่อที่ว่าเมื่อคุณไม่สามารถใช้ใน namespace นำหน้าด้วยชื่อ namespaceคำสั่งนี้จะบอกคอมไพเลอร์ที่ว่ารหัสที่ตามมาจะใช้ชื่อ namespace ที่ระบุ
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } using namespace first_space; int main () { // 调用第一个命名空间中的函数 func(); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
Inside first_space
โดยใช้คำแนะนำนอกจากนี้ยังอาจถูกนำมาใช้เพื่อระบุรายการที่เฉพาะเจาะจงการ namespace ตัวอย่างเช่นถ้าคุณตั้งใจจะใช้ส่วน namespace ศาล Std คุณสามารถใช้คำสั่งต่อไปนี้:
using std::cout;
รหัสที่ตามมาเมื่อมีการใช้ศาลคุณไม่สามารถเพิ่มชื่อ namespace เป็นคำนำหน้า แต่Std namespace รายการอื่น ๆ ยังคงต้องเพิ่มชื่อ namespace เป็นคำนำหน้าดังต่อไปนี้:
#include <iostream> using std::cout; int main () { cout << "std::endl is used with std!" << std::endl; return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
std::endl is used with std!
ชื่อการใช้คำแนะนำการแนะนำให้รู้จักปฏิบัติตามกฎระเบียบขอบเขตปกติรายชื่อจากการใช้คำสั่งแรกที่มองเห็นได้จนกว่าจะสิ้นสุดของช่วง ในกรณีนี้ชื่อเดียวกันอยู่นอกขอบเขตของความหมายของหน่วยงานที่เป็นที่ซ่อนอยู่
namespace ต่อเนื่อง
namespace สามารถกำหนดในส่วนที่แตกต่างกันดังนั้น namespace ที่ประกอบด้วยหลายส่วนที่กำหนดไว้แยกองค์ประกอบ ส่วนประกอบต่างๆของ namespace ที่สามารถแพร่กระจายในหลายไฟล์
ดังนั้นถ้าเป็นส่วนหนึ่งของ namespace ต้องขอชื่อที่กำหนดไว้ในแฟ้มอื่นคุณยังจำเป็นต้องประกาศชื่อ นิยาม namespace ต่อไปนี้สามารถกำหนด namespace ใหม่ก็สามารถหา namespace มีอยู่เพื่อเพิ่มองค์ประกอบใหม่:
namespace namespace_name { // 代码声明 }
namespaces ซ้อน
Namespaces สามารถซ้อนกันคุณสามารถกำหนด namespace อื่นใน namespace เป็นดังนี้
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
คุณสามารถใช้ :: ผู้ประกอบการในการเข้าถึงสมาชิก namespace ที่ซ้อนกัน:
// 访问 namespace_name2 中的成员 using namespace namespace_name1::namespace_name2; // 访问 namespace:name1 中的成员 using namespace namespace_name1;
ในคำสั่งข้างต้นหากคุณกำลังใช้ namespace_name1 แล้วอยู่ในช่วงขององค์ประกอบ namespace_name2 นอกจากนี้ยังมีดังต่อไปนี้:
#include <iostream> using namespace std; // 第一个命名空间 namespace first_space{ void func(){ cout << "Inside first_space" << endl; } // 第二个命名空间 namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } } using namespace first_space::second_space; int main () { // 调用第二个命名空间中的函数 func(); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
Inside second_space