เราจะมาดูกันว่าเราจะขยายเนมสเปซได้อย่างไร และสามารถใช้เนมสเปซที่ไม่มีชื่อหรือไม่ระบุชื่อได้
บางครั้งเราสามารถกำหนดเนมสเปซหนึ่งรายการ จากนั้นเราสามารถเขียนเนมสเปซอีกครั้งด้วยคำจำกัดความเดียวกัน หากอันแรกมีสมาชิกบางส่วน และอันที่สองมีสมาชิกอื่น เนมสเปซจะถูกขยาย เราสามารถใช้สมาชิกทั้งหมดจากเนมสเปซนั้นได้
ตัวอย่าง
#include <iostream> using namespace std; namespace my_namespace { int my_var = 10; } namespace my_namespace { //extending namespace int my_new_var = 40; } main() { cout << "The value of my_var: " << my_namespace::my_var << endl; cout << "The value of my_new_var: " << my_namespace::my_new_var << endl; }
ผลลัพธ์
The value of my_var: 10 The value of my_new_var: 40
เนมสเปซที่ไม่มีชื่อจะไม่มีชื่อใดๆ ซึ่งมีคุณสมบัติที่แตกต่างกัน
- ใช้งานได้โดยตรงในโปรแกรมเดียวกัน
- ใช้เพื่อประกาศตัวระบุที่ไม่ซ้ำ
- ในชื่อเนมสเปซประเภทนี้ของเนมสเปซจะถูกสร้างขึ้นโดยคอมไพเลอร์เองโดยเฉพาะ
- สามารถเข้าถึงได้จากไฟล์นั้น ซึ่งสร้างขึ้น
- เนมสเปซที่ไม่มีชื่อเป็นการแทนที่การประกาศตัวแปรแบบคงที่
ตัวอย่าง
#include <iostream> using namespace std; namespace { int my_var = 10; } main() { cout << "The value of my_var: " << my_var << endl; }
ผลลัพธ์
The value of my_var: 10