头文件的作用和写法

from://http://ceeji.net/blog/c%E7%AC%94%E8%AE%B0%EF%BC%9A%E5%A4%B4%E6%96%87%E4%BB%B6%E7%9A%84%E4%BD%9C%E7%94%A8%E5%92%8C%E5%86%99%E6%B3%95/

在 C++ 中有一个很重要的概念就是头文件。

之所以在 C++ 中要使用头文件,最主要的原因是 C++ 的同一个项目可能有多个源代码文件,要命的是这些源代码是分别单独编译的。

也就是说,在编译其中一个文件时,编译器并不知道其它文件中定义的内容,如类、全局变量等。

这就要求我们必须在要使用某个类、函数或变量的每个文件中声明它,否则 C++ 是无法找到它的。

例如:假设你写了一个通用的函数 add,它的定义如下:

   int add(int a, int b)
    {
       return a+b;
    }

很多文件可能都需要使用加法。假设有一个文件 b.cpp 需要使用这个函数,那么,它必须先声明它,虽然不需要再重写。

    int add(int a, int b);
    add(5,5);

如果有很多文件都要使用这个函数,那么这会变得麻烦,特别的,如果你写了一个类,那么你需要维护大量的声明(对于每一个 public 对象),并且如果你的类的定义发生了改变,你可能不得不改变无数个声明。

所以,C++ 语言提出了头文件的概念。你只需要在头文件中声明一次,在实现文件中定义一次,在所有需要用的文件中,就只需要引用这个头文件,相当于每个文件都包含了一个声明。

为了防止头文件的重复包含,通常应该使用预处理指令 #define (定义符号)、#ifndef(如果没有定义)、#endif(结束判断)来书写头文件的内容。

请理解如下的例子。

Xiao 类的实现(xiao.cpp)

    #include "xiao.h"
    bool Xiao::MobaiXiao()
    {
            return this->mobai("xiao", 10000); // 正确
    }
    bool Xiao::mobai(char* cowname, int mobai_times)
    {
            return true;
    }

Xiao.h 头文件

    #ifndef XIAO_H
    #define XIAO_H
    class Xiao
    {
    public:
        bool MobaiXiao();
    private:
        bool mobai(char* cowname, int mobai_times);
    };
    #endif

主程序:

    #include "xiao.h"
    int main()
    {
        (Xiao()).MobaiXiao (); // 正确
        //(Xiao()).mobai ("xiao", 10000); // 错误

        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值