c++/java命名空间、引用问题。
为什么c++/java中的int、double等不需要引入命名空间,可以直接inta;doubleb;而strtin需要std::string...
为什么c++/java中的int、double等不需要引入命名空间,可以直接
int a; double b;
而strtin需要 std::string 展开
int a; double b;
而strtin需要 std::string 展开
1个回答
2016-08-07 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
没有理解C++的namespace。如果熟悉java的话,可以这样理解,java中用包机制取代了所谓的命名空间。在java中一般是一个类一个文件的(原则上说多个类放一个文件下也没问题),然后相同功能的一组类文件组合成了一个包。
在C++中,namespace就相当于java中的包,单纯的头文件是不需要命名空间的,如果想把多个类、辅助函数等等组合成一个整体,就用namespace。
命名空间是防止名称碰撞的机制,比如有一个class A,也有一个class A,那么们在同一个程序下的话到底是用的A还是的A?在C++中就这样用I::A、Y::A,而java中则是I.A,Y.A
不需要.h的头文件,是C++的标准头文件,里面都包含了namespace std,如果是标准出现前的C++头文件,如<iostream.h>这些都不包含namespace,那个时候还没这个概念。新的头文件是标准出现后重写的,防止命名碰撞问题(VC++6.0是标准之前的编译器,允许使用旧版的头文件,但这些都不包含namespace,而新编译器都不再使用带.h的C++标准头文件)如果是C的头文件,如<stdio.h>就不包含namespace,C++重写的C的头文件都包含std,名称为<cXXX>,如<cstdio>
在C++中,namespace就相当于java中的包,单纯的头文件是不需要命名空间的,如果想把多个类、辅助函数等等组合成一个整体,就用namespace。
命名空间是防止名称碰撞的机制,比如有一个class A,也有一个class A,那么们在同一个程序下的话到底是用的A还是的A?在C++中就这样用I::A、Y::A,而java中则是I.A,Y.A
不需要.h的头文件,是C++的标准头文件,里面都包含了namespace std,如果是标准出现前的C++头文件,如<iostream.h>这些都不包含namespace,那个时候还没这个概念。新的头文件是标准出现后重写的,防止命名碰撞问题(VC++6.0是标准之前的编译器,允许使用旧版的头文件,但这些都不包含namespace,而新编译器都不再使用带.h的C++标准头文件)如果是C的头文件,如<stdio.h>就不包含namespace,C++重写的C的头文件都包含std,名称为<cXXX>,如<cstdio>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询