为了账号安全,请及时绑定邮箱和手机立即绑定

关于下面的程序,我不明白为什么一定要用#include<iostream.h>?

关于下面的程序,我不明白为什么一定要用#include<iostream.h>?

一只斗牛犬 2021-12-08 23:19:57
/********found********/#include <iostream.h>class Myclass{int m_Number;friend class friendC1;public:Myclass(){m_Number = 5;}};class friendC1{public:int fun(int x){Myclass obj;return obj.m_Number-x;}};void main(){friendC1 obj;cout<<obj.fun(10)<<endl;
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

关于这个问题,iostream.h是非标准头文件,iostream是标准头文件形式。iostream.h时代没有名词空间,即所有库函数包括头文件iostream.h都声明在全局域。为了体现结构层次,c++标准委员会引入了名词空间这一概念,并把所有库函数声明由全局域改到了名词空间std。故而,目前这两种头文件等价:#include<iostream.h>和#include <iostream>;using namespace std(因为iostream声明在std中,故而要加上这句,除非你不用库函数,否则错误);
如前很多编译器都同时支持这两种头文件形式,更好的当然是标准头文件。至于为什么不废除非标准头文件,大概是为了兼容以前的代码吧。
还有一点在标准c++中,所有库函数都没有.h后缀了,如果是c语言的库函数,则去掉后缀,并在开头加上一个c(如,c++的string.h变为string,c语言的stdio.h,变为cstdio,c语言的string.h变为cstring等等)。

查看完整回答
反对 回复 2021-12-12
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

#include <iostream>

using namespace std;
class Myclass
{
int m_Number;

friend class friendC1;
public:
Myclass()
{
m_Number = 5;
}
};
class friendC1
{
public:
int fun(int x)
{
Myclass obj;

return obj.m_Number-x;
}
};
int main()
{
friendC1 obj;
cout<<obj.fun(10)<<endl;
}

使用名字空间。

<iostream.h>为非标准



查看完整回答
反对 回复 2021-12-12
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

#include <iostream>需要引用命名空间 std里的东西
而c版的iostream.h就相当于和这个文件放一起,所以是不一样的

查看完整回答
反对 回复 2021-12-12
  • 3 回答
  • 0 关注
  • 345 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信