如何规范使用using-namespace指令替代命名空间_c?
- 内容介绍
- 文章标签
- 相关推荐
本文共计914个文字,预计阅读时间需要4分钟。
绝对不能。这是最常被忽视的规范区域。
头文件被多个源文件包含时,using namespace std; 会污染全局命名空间,导致符号冲突——比如你定义的 list 或 count 函数,可能和 std::list 或 std::count 意外重名,编译器报错却找不到源头。
- 只在
.cpp文件的实现末尾、函数定义之前用(且优先考虑更窄的作用域) - 头文件中必须用完整限定名,如
std::vector、std::string - 如果真想省事,可用
using std::string;这种单名引入,但仅限于 .cpp 文件内
using 声明和 using 指令的区别在哪
一个是“请把我需要的那个搬进来”,一个是“把整个房间都倒进我的桌子”。差别极大。
using std::cout; 是声明:只引入 cout 这一个名字;using namespace std; 是指令:把 std 里所有公开名字(现在可能有上千个)全拉进当前作用域。
本文共计914个文字,预计阅读时间需要4分钟。
绝对不能。这是最常被忽视的规范区域。
头文件被多个源文件包含时,using namespace std; 会污染全局命名空间,导致符号冲突——比如你定义的 list 或 count 函数,可能和 std::list 或 std::count 意外重名,编译器报错却找不到源头。
- 只在
.cpp文件的实现末尾、函数定义之前用(且优先考虑更窄的作用域) - 头文件中必须用完整限定名,如
std::vector、std::string - 如果真想省事,可用
using std::string;这种单名引入,但仅限于 .cpp 文件内
using 声明和 using 指令的区别在哪
一个是“请把我需要的那个搬进来”,一个是“把整个房间都倒进我的桌子”。差别极大。
using std::cout; 是声明:只引入 cout 这一个名字;using namespace std; 是指令:把 std 里所有公开名字(现在可能有上千个)全拉进当前作用域。

