老梁故事汇全集音频:C++中有这样一个奇怪的问题,你能解释吗?

来源:百度文库 编辑:高考问答 时间:2024/04/27 23:27:45
方式一:加了<.h>不用 using namespace std;这一句,编译通过.
#include <iostream.h>
#include <string>
//using namespace std;
class account;
方式二:不加<.h> 用了using namespace std;这一句,编译通过.
#include <iostream>
#include <string>
using namespace std;
class account;

有谁能告诉预处理是如何进行的,我想问题就出在这.或者解释一下,为什么会出现这种情况???积极发言,老师教的,不是吗.^-^.

iostream这是标准C++的头文件.
iostream.h这是传统C++的头文件(与C兼容--C里没有namespace概念).
在标准C++中,必须命名空间来限定. -- 既可以使用using namespace来导入命名空间,也可以使用 命名空间::语句 的形式,还可以使用using 命名空间::语句 来导入部分语句.
下面是三个例子:
例一:
#include <iostream>
using namespace std;
int main()
{
cout << "你好,世界!" << endl;
return 0;
}
例二:
#include <iostream>
int main()
{
std::cout << "你好,世界!" << std::endl;
return 0;
}
例三:
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout << "你好,世界!" << endl;
return 0;
}

建议使用标准C++方法 -- 虽然现在国内的书籍,范例绝大部分使用的是传统的.
为什么要使用标准的C++方法?因为它包含了C++最先进的特性.举个例子.在传统C++中,和C一样,使用char数组来表示字符串,而它是极不容易操作的.
但,标准在C++中,可以直接使用string类型来安全,快捷的存储字符串:
#include<iostream>
using namespace std;
int main()
{
string name = "你的名字";
return 0;
}

PS:传统C++也可以通过包含头文件string(不是string.h)来实现string数据类型 -- string头文件也是标准C++提供的
所以,还是用标准C++吧!
(上面的描述反驳了楼上那位专家的所说的"一样")

预处理里面包含了一些常用的函数方便设计人员使用,如果不用<.h>,有些函数在调用的时候就有可能出现错误

你去翻下C++的基础的书就知道了。
一个是命名空间,一个是include头文件

一样的 如果你加了.h 那编译器自动找到库进行调用
如果不加.h 那就要指定命名空间 调用的库就在那个命名空间里哪
所以一样可以用

你试试什么都不加看看 呵呵