C++头文件名与名称空间

来源:互联网 发布:网络上的时时彩合法吗 编辑:程序博客网 时间:2024/05/16 01:44
1.头文件名
像iostream这样的文件叫做包含文件(include file)——由于它们被包含在其他文件中;也叫头文件(header file)——由于它们被包含在文件起始处。C++编译器自带了很多头文件,每个头文件都支持一组特定的工具。C语言的传统是,头文件使用扩展名.h,将其作为一种通过名称标识文件类型的简单方式。例如,头文件math.h支持各种C语言数学函数,但C++的用法变了。现在,对老式C的头文件保留了扩展名h(C++程序仍可以使用这种文件),而C++头文件则没有扩展名。有些C头文件被转换为C++头文件,这些文件被重新命名,去掉了扩展名h(使之成为C++风格的名称),并在文件名称前面加上前缀c(表明来自C语言)。例如,C++版本的math.h为cmath。有时c头文件的C版本和C++版本相同,而有时候新版本做了一些修改。
表1 头文件命名约定

2.命名空间
    如果使用iostream而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:
    using namespace std;
    名称空间支持是一项C++特性,目的是为了让您编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序,一个潜在的问题是,可能使用两个已封装好的产品,而它们都包含一个名为wanda( )的函数。这样,使用wanda( )函数时,编译器将不知道指的事哪个版本。名称空间让厂家能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。因此,Microflop Industries就可以将其定义放到一个名为Microflop的名称空间中。这样,其wanda( )函数的全称为Microflop::wanda( );同样,Piscine公司的wanda( )版本可以表示为Piscine::wanda( )。这样,程序就可以使用名称空间来区分不同的版本了:
    Microflop::wanda(“go dancing?”);
    Piscine::wanda(“a fish named Desire”);
    按照这种方式,类、函数、和变量便是C++编译器的标准组件,它们现在都被放置在名称空间std中。仅当头文件没有扩展名h时,情况才是如此。这意味着在iostream中定义的用于输出的cout变量实际上时std::cout,而endl实际上是std::endl。因此,可以省略编译指令using,以下述方式进行编码:
    std::cout << “Come up and C++ me some time.”;
    std::cout << std::endl;
    下面的一行代码表明,可以使用std名称空间中定义的名称,而不必使用std::前缀:
    using namespace std;
    这个using编译指令是的std名称空间中的所有名称都可用。这是一种偷懒的做法。更好地方法是,只使所需的名称可用,这可以通过使用using声明来实现:
    using std::cout;
    using std::endl;
    using std::cin;

1 0