zoukankan      html  css  js  c++  java
  • C++ 头文件

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

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

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

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

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

    ?View Code CPP
     
    1
    2
    3
    4
    
    int add(int a, int b)
    {
       return a+b;
    }

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

    ?View Code CPP
     
    1
    2
    
    int add(int a, int b);
    add(5,5);

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

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

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

    请理解如下的例子,它是对上个笔记中的 Xiao 类的改进。

    Xiao 类的实现(xiao.cpp)

    ?View Code CPP
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    #include "xiao.h"
     
    bool Xiao::MobaiXiao()
    {
    		return this->mobai("xiao", 10000); // 正确
    }
    bool Xiao::mobai(char* cowname, int mobai_times)
    {
    		// 膜拜神牛。
    		return true;
    }

    Xiao.h 头文件

    ?View Code CPP
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    #ifndef XIAO_H
    #define XIAO_H
    class Xiao
    {
    public:
    	bool MobaiXiao();
    private:
    	bool mobai(char* cowname, int mobai_times);
    };
    #endif

    主程序

    ?View Code CPP
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #include "xiao.h"
     
    int main()
    {
    	(Xiao()).MobaiXiao (); // 正确
    	//(Xiao()).mobai ("xiao", 10000); // 错误
     
        return 0;
    }
  • 相关阅读:
    Java中四个作用域的可见范围
    java构造方法前加void有什么作用
    css3渐变
    日历插件
    三级联动地点
    js返回上一级代码和刷新页面代码
    css3滚动条
    如何写评价“星星”有半个情况的,如3.5,这样写好调数据
    原生态js单个点击展开收缩和jQuery的写法
    推荐大家使用的CSS书写规范、顺序
  • 原文地址:https://www.cnblogs.com/yaowen/p/4815236.html
Copyright © 2011-2022 走看看