C++ | 命名空间_namespace 桃扇骨 2022-02-28 04:46 274阅读 0赞 C语言中是不存在命名空间的概念的,因为整个C语言工程就是一个大型的命名空间。当工程规模小时,不会产生大问题;但是一旦工程的规模大,会用到大量的动态库,尤其是第三方开发的动态库时往往就会遇到命名冲突的问题。因为不同的厂家开发的动态库中全局变量的命名很可能重复,为了避免这个问题,C++中新增了命名空间这一概念,使得通过命名空间的限定从而使用相同名称的全局变量。 命名空间的用法: 方法一:using namespace xxx 方法二:xxx::函数名 通过C++的标准库`iostream`来对上述两种使用方式进行举例说明。 #方法一: #include "iostream" using namespace std; int main() { cout << "test namespace" << endl; return 1; } #方法二: #include "iostream" int main() { std::cout << "test namespace" << std::endl; return 1; } > Note:需要注意`iostream`和`iostream.h`的区别,前者是C++中最新的速度更快的标准库,而后者是最早期版本的标准库且其内部没有命名空间这一说法。目前都用前者。 代码举例 #include "stdafx.h" #include "iostream" namespace BigHouse { int price = 100000; namespace State { struct housestate { int area=1000; int tall=1000; }; } } namespace SmallHouse { int price = 100; namespace State { struct housestate { int area = 10; int tall = 10; }; } } int main() { BigHouse::State::housestate BigHouseState; SmallHouse::State::housestate SmallHouseState; std::cout << "BigHouse price:"<< BigHouse::price << std::endl; std::cout << "BigHouse area:" << BigHouseState.area << std::endl; std::cout << "BigHouse tall:" << BigHouseState.tall << std::endl; std::cout << "SmallHouse price:" << SmallHouse::price << std::endl; std::cout << "SmallHouse area:" << SmallHouseState.area << std::endl; std::cout << "SmallHouse tall:" << SmallHouseState.tall << std::endl; system("spase"); } 最终输出结果如下图所示: ![aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81NTI5OTk3LWNiNmQ0ZDNjZTVlOGM0NWMucG5n][] [aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy81NTI5OTk3LWNiNmQ0ZDNjZTVlOGM0NWMucG5n]: /images/20220228/2753a2df81804251ac2ba1626b0c470c.png
还没有评论,来说两句吧...