学习C++之父的最新姐妹作笔记1
时间:2010-12-21 来源:Daywei
在第一个程序helloworld.h中,C++之父给我们一种焕然一些的新的编程代码,代码如下:
#include "std_lib_facilities.h"
int main()
{
cout<<"hello world!\n";
keep_window_open();
return 0;
}
我看到一些人在网上问 #include "std_lib_facilities.h"是什么,编译不通过之类的问题,我也在疑惑,其实伟大的C++之父给我们已经做了解答,我们需要沉住气往下看,
#include "std_lib_facilities.h" 据我猜测应该是C++之父自己封装了一些 我们以前用到的头文件和命名空间之类的东西
比如 #include<iostring>
#include<string>
using namespace std;
在他的书中我们也可以看到#include "std_lib_facilities.h" 这个文件是可以用我们比较熟悉的一些头文件来代替的
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
inline void keep_window_open(){char ch;cin>>ch;};
在一些Windows机器中需要调用keep_window_open(),以防止在你在有机会阅读输出之前窗口被关闭。这是Windows的一个特点,而不是C++的。
下面我来解释一下为什么C++之父用#include "std_lib_facilities.h"作为头文件,其实在书的179页也提到了这个问题。
因为在以前我们写程序的时候都会注意使用using namespace std 也就是命名空间。简单一点的程序还好,如果是做一个大型项目,标准库的命名空间肯定很多,再加上自定义的命名空间也不少。所以只要你使用std_lib_facilities.h,你就不需要担心标准库文件和std名字空间了。
一个一般性的原则是,除非是std这种在某个应用领域中大家已经非常熟悉的命名空间,否则最好不要使用using指令。过度使用using指令带来的问题,你已经记不清楚每个名字来自哪里,结果就是你又陷入名字冲突之中。显示使用全限定名,或者使用using声明就不存在这个问题。因此,将一个using指令放在头文件中是一个非常坏的习惯,因为用户就无法避免上述问题。然而,为了简化初学者编写程序,C++之父确实在std_lib_facilities.h中为std放置了一个using指令,因此我们可以像下面代码这样来写程序: