大一我曾学过c++,但我觉得一点都没学会它,固然有老师教的不好的因素,但也因为自己没好好认识到这门语言该怎么学,因为那时什么都不懂。现在重新学一遍,希望有新的收获。
如果打开iostream这个文件,你会发现:
// iostream
……
#include <istream>
……
——————————————————————————————————————————
// istream
……
#include <ostream>
……
——————————————————————————————————————————
// ostream
……
template<class _E, class _Tr = char_traits<_E> >
class basic_ostream : virtual public basic_ios<_E, _Tr> {
……
};
——————————————————————————————————————————
由此可见:
1)cout当然是ostream的一个实例或者你可以认为是一个实例的 引用 。
2)ostream不一定定义在iostream中,但是如果你递归地展开iostream的话,肯定会有它的声明。否则,一个没有声明的类,如何访问其成员 方法 ???比如重载的<<
3)有上面可以看出,basic_ostream是个模板类,在VC下,它的实现只能在头文件中,所以,它的实现没有被编译成库文件。
4)它的实现在ostream这个文件中。
5)所以iostream中有它的声明和实现。
网上搜集的一些资料,我总结了下.
#include<iostream>
using namespace std;
void main()
{
cout << "hello world!" ;
}
using namespace std;
void main()
{
cout << "hello world!" ;
}
这段代码是c++里最最简单的一段代码,但它里面却包含了很多内容。
请看分析:
#include<iostream> // 包含iostream,编译器会把iostream中内容替换这条语句
using namespace std; // 打开命名空间std,
// std命名空间内的定义的类、函数等就可以直接访问,
// 而不需要用std::这种方式来访了
void main()
{
cout << "hello world!"; // 如果没有#include<iostream>,cout是未定义的;
// 如果没有using namespace std;,
// 你就得这样写了:std::cout << "hello word!";
}
using namespace std; // 打开命名空间std,
// std命名空间内的定义的类、函数等就可以直接访问,
// 而不需要用std::这种方式来访了
void main()
{
cout << "hello world!"; // 如果没有#include<iostream>,cout是未定义的;
// 如果没有using namespace std;,
// 你就得这样写了:std::cout << "hello word!";
}
如果打开iostream这个文件,你会发现:
// iostream
……
#include <istream>
……
——————————————————————————————————————————
// istream
……
#include <ostream>
……
——————————————————————————————————————————
// ostream
……
template<class _E, class _Tr = char_traits<_E> >
class basic_ostream : virtual public basic_ios<_E, _Tr> {
……
};
——————————————————————————————————————————
由此可见:
1)cout当然是ostream的一个实例或者你可以认为是一个实例的 引用 。
2)ostream不一定定义在iostream中,但是如果你递归地展开iostream的话,肯定会有它的声明。否则,一个没有声明的类,如何访问其成员 方法 ???比如重载的<<
3)有上面可以看出,basic_ostream是个模板类,在VC下,它的实现只能在头文件中,所以,它的实现没有被编译成库文件。
4)它的实现在ostream这个文件中。
5)所以iostream中有它的声明和实现。
网上搜集的一些资料,我总结了下.