Namespace trong C++
Trong C++, namespace là một phạm vi hoặc vùng chứa được đặt tên được sử dụng để tổ chức và đính kèm một tập hợp các phần tử mã code, chẳng hạn như biến, hàm, lớp và các namespace khác. Chúng chủ yếu được sử dụng để phân chia và quản lý cơ sở mã code, cho phép các nhà phát triển kiểm soát xung đột tên và chuyên biệt hoá mã code.
Cú pháp
Đây là cú pháp để khai báo một namespace:
namespace identifier {
// phần tử mã code
}
Sử dụng namespace
Để truy cập các phần tử trong một namespace, bạn có thể sử dụng toán tử phân giải phạm vi ::. Dưới đây là một số ví dụ:
Khai báo và truy cập một namespace
#include <iostream>
namespace animals {
std::string dog = "Bobby";
std::string cat = "Lilly";
}
int main() {
std::cout << "Dog's name: " << animals::dog << std::endl;
std::cout << "Cat's name: " << animals::cat << std::endl;
return 0;
}
Namespace lồng nhau
Namespace có thể được lồng trong các không gian tên khác:
#include <iostream>
namespace outer {
int x = 10;
namespace inner {
int y = 20;
}
}
int main() {
std::cout << "Outer x: " << outer::x << std::endl;
std::cout << "Inner y: " << outer::inner::y << std::endl;
return 0;
}
Từ khóa using
Bạn có thể sử dụng từ khóa using để nhập các phần tử được đặt tên vào phạm vi hiện tại. Tuy nhiên, điều này có thể dẫn đến xung đột tên nếu nhiều namespace có các phần tử trùng tên.
Sử dụng một phần tử từ một namespace
#include <iostream>
namespace animals {
std::string dog = "Bobby";
std::string cat = "Lilly";
}
int main() {
using animals::dog;
std::cout << "Dog's name: " << dog << std::endl;
return 0;
}
Sử dụng toàn bộ namespace
#include <iostream>
namespace animals {
std::string dog = "Bobby";
std::string cat = "Lilly";
}
int main() {
using namespace animals;
std::cout << "Dog's name: " << dog << std::endl;
std::cout << "Cat's name: " << cat << std::endl;
return 0;
}
Tóm lại, namespace là một cơ chế hữu ích trong C++ để tổ chức mã code, tránh xung đột đặt tên và quản lý khả năng hiển thị của các phần tử mã code.