c++ using与#include 困惑
最近在学习c++,举个例子,程序前面已经#include<string>,为什么后面使用stringstr;定义变量的时候,还要在前面加上usingstd::string...
最近在学习c++,举个例子,程序前面已经#include <string> ,为什么后面使用string str;定义变量的时候,还要在前面加上 using std::string ,难道#include 《string》 的时候,没有把string的 定义引用过来吗? 还需要using 二次声明一下?
展开
2个回答
展开全部
#include <string>把string的定义引用过来了,但是别的库文件可能也会定义自己的string类型(你也可以尝试这么做)。
为了防止跟其他string类型冲突,C++标准库把string定义到std名称空间里面,所以要用using std::string 指定用到的是std名称空间里面的string类型,而不是别的库文件里面的string
using namespace std是不推荐的,因为标准库定义了数量庞大的名称,包括min、max、ref、swap等常用名称,一不小心发生重名的话就会有难以预料的BUG发生
为了防止跟其他string类型冲突,C++标准库把string定义到std名称空间里面,所以要用using std::string 指定用到的是std名称空间里面的string类型,而不是别的库文件里面的string
using namespace std是不推荐的,因为标准库定义了数量庞大的名称,包括min、max、ref、swap等常用名称,一不小心发生重名的话就会有难以预料的BUG发生
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询