刚学C++,类声明类实现和主程序分离时#include<iostream>应该放哪里在下面这个程序中出了问题。教材里的简单例子显示时间(时:分:秒)用的VS2010,
//Time.h------------------------------------------------------------
#pragma once
class Time
{
public:
Time(int h=0,int m=0,int s=0);
~Time(){}
friend ostream & operator<<(ostream &output,Time &t);
private:
int hour;
int minute;
int sec;
};
//Time.cpp---------------------------------------------------------
#include"Time.h"
Time::Time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
//main.cpp--------------------------------------------------
#include"Time.h"
int main()
{
ostream & operator<<(ostream &output,Time &t);
Time t1(22,50,50);
cout<<t1<<endl;
return 0;
}
ostream & operator<<(ostream &output,Time &t)
{
output<<t.hour<<':'<<t.minute<<':'<<t.sec;
return output;
}
------------------------------------------------------------------------
1.这个程序会报错。
2.在Time.h和main.cpp里都加
#include<iostream>
using namespace std;则不报错。
3.只在Time.h里加
#include<iostream>
using namespace std;则不报错。
--------------------------------------------------------------------
问题是
1.上述操作为什么就解决问题了。
2.我的理解是只要放到Time.h里,然后main.cpp里#include“Time.h”,因为Time.h里有了#include<iostream>,所以这是一种万能的方法?这样会不会不符合编程的习惯经验。
请大神们指教,鄙人刚学C++。