没有合适的资源?快使用搜索试试~ 我知道了~
C++命名空间.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 198 浏览量
2023-02-27
19:50:49
上传
评论
收藏 452KB PDF 举报
温馨提示
试读
14页
.
资源推荐
资源详情
资源评论
C++ using namespace std 详解
所谓 namespace ,是指标识符的各种可见范围。 C++标准程序库中的所有标识符都被定义
于一个名为 std 的 namespace 中。
一 :
<iostream>和 <iostream.h> 是不一样,前者没有后缀,实际上,在你的编译器 include 文
件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h 的头文件 c ++标准已经明确提出不支持了, 早些的实现将标准库功能定义在全局空间
里,声明在带.h 后缀的头文件里, c ++标准为了和 C 区别开,也为了正确使用命名空间,规定
头文件不使用后缀 .h。
因此,当使用 <iostream.h> 时,相当于在 c 中调用库函数,使用的是全局命名空间,也就是
早期的 c ++实现;当使用 <iostream> 的时候,该头文件没有定义全局命名空间,必须使用
namespacestd ;这样才能正确使用 cout 。
二:
所谓 namespace ,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为 std 的 namespace 中。
由于 namespace 的概念,使用 C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如 std::ostream 而不是 ostream 。完整语句如下:
std::cout << std::hex<< 3.4<< std::endl;
2、使用 using 关键字。
using std::cout;
using std::endl;
以上程序可以写成
cout << std::hex<< 3.4<< endl;
3、最方便的就是使用 using namespace std;
例如:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
这样命名空间 std 内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。
那么以上语句可以如下写 :
cout << hex<< 3.4<< endl;
因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名
字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间 std
中。但这又会带来了一个新问题。无数原有的 C++代码都依赖于使用了多年的伪标准库中的功
能,他们都是在全局空间下的。
所以就有了<iostream.h>和<iostream> 等等这样的头文件,一个是为了兼容以前的
C++代码,一个是为了支持新的标准。
命名空间 std 封装的是标准程序库的名称,标准程序库为了和以前的头文件区别, 一般不加 ".h"
using namespace std 的用法
摘自
using namespacestd; 用的并不少!
---------------------------------------------------------------
实际上就是告诉编译器,你类型是什么,在哪能找到。
常用的是 using namespace std, 就是说用 C++的标准名字空间。
你也可以引用你自己的名字空间。比如说:
import "C:\\MyTest\\test.tlb"
using namespace CMyTest
就可以引用 CMyTest 内的各个类型名
看 C++ prime
---------------------------------------------------------------
声明该文件使用 C++标准库吧!
比如
#include <iostream>
using namespace std;
void main()
{
cout<< "hello!"<< endl;
}
如果不用 using namespace std; 这句,那么
std::cout << "hello!"<<endl;
这是名字空间的问题!具体参看有关书籍吧,新版的 C++ 书应该都有介绍的!
---------------------------------------------------------------
using 指示符!
这是个名字空间问题,是标准 C++引入的新概念!
具体在《C++Primer 》第 8.6 节有详细说明!
---------------------------------------------------------------
因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名
字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间 std
中。但这又会带来了一个新问题。无数原有的 C++代码都依赖于使用了多年的伪标准库中的功
能,他们都是在全局空间下的。
所以就有了<iostream.h>和<iostream>等等这样的头文件,一个是为了兼容以前的
C++代码,一个是为了支持新的标准。
---------------------------------------------------------------
名字空间,实质上也是为了方便程序在不同平台上正确的运行。
---------------------------------------------------------------
namespace 是为了解决 C++中的名字冲突而引入的。
什么是名字冲突呢?比如,在文件 x.h 中有个类 MyClass,
在文件 y.h 中也有个类 MyClass,而在文件 z.cpp 中要同时
引用 x.h 和 y.h 文件。显然,按通常的方法是行不能的,
那怎么办呢?引入 namespace 即可。例如:
在 x.h 中的内容为
// x.h
namespace MyNam espace1
{
class MyClass
{
public:
void f();
private:
int m;
}
};
在 y.h 中的内容为
// y.h
namespace MyNam espace2
{
class MyClass
剩余13页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6445
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功