เราจะมาดูกันว่าเราจะขยายเนมสเปซได้อย่างไร และสามารถใช้เนมสเปซที่ไม่มีชื่อหรือไม่ระบุชื่อได้
บางครั้งเราสามารถกำหนดเนมสเปซหนึ่งรายการ จากนั้นเราสามารถเขียนเนมสเปซอีกครั้งด้วยคำจำกัดความเดียวกัน หากอันแรกมีสมาชิกบางส่วน และอันที่สองมีสมาชิกอื่น เนมสเปซจะถูกขยาย เราสามารถใช้สมาชิกทั้งหมดจากเนมสเปซนั้นได้
ตัวอย่าง
#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