把文件分成头文件和源文件完全是为了方便扩展和组织程序 

  这么说吧 我们可能会自定义很多函数 而这些函数分别会在不同的地方被调用 甚至有些时候我们需要把一堆函数打包起来一起调用 比如#include "stdio.h"  的意思就是告诉系统 我要用输入输出函数包(stdio.h打包了各种各样的输入输出函数). 

  说说具体的吧 为了方便函数可以独立的被任何地方调用 我们会把每一个函数的定义代码都写成一个cpp 这个叫做函数的代码文件 并且此cpp的文件名以此函数名来命名 同时 我们会建立一个文件名相同的头文件(即.h)并在该头文件里写上此函数的函数声明(如 void a();等等) 别看头文件里只写了简单的一句 但却很有用 如果某个函数里需要调用我们刚才定义的那个函数的时候之需要在代码里加上一句#include "xxxx.h"就可以了(xxxx就是刚才我们自己建立的那个头文件) 这样说好像还是体现不出这种发的优势 那么看看头文件的另一种用法 假如我们现在要开发一个视频编辑软件 那么里面必然要定义很多很多函数 有关于图像处理的 关于音频处理的 等等等等 在没有头文件的情况下 如果我们的main()函数里需要调用关于图像处理的很多函数 那么我们就得在调用语句的前面一个一个的对所用到的函数进行声明(否则系统就会报错 说你的函数没有定义) 而用了头文件就方便多了 我们只需要建立一个tuxiang.h 并在里面写上所有的关于图像处理的函数的声明(相当于我们建立了一个图像函数包) 这样 当任何一个函数想要调用关于图像处理的函数时 无需任何声明 只需在代码前加上一句#include "tuxiang.h"就可以了 这样就避免了每一个cpp里调用图像函数包都得写一大堆声明 

CPP-基础:C++中为什么需要一个头文件,一个cpp文件的更多相关文章

  1. C语言中头文件和cpp文件解析

    务必提前预读这里的内容:http://www.cnblogs.com/stemon/p/3999844.html 回到cpp文件与头文件各写什么内容的话题上: 理论上来说cpp文件与头文件里的内容,只 ...

  2. Keil MDK中单个c文件生成LIB文件

    看大多数说的都是简单地将整个工程转换成.LIB,在Project->Options for Target->Output下,选择Create Library,就可以了. 不过这样生成的li ...

  3. CPP基础

    CPP基础1. 如果没有指明访问限定符(public,private),class中默认的private,而struct中的成员默认是public的. #include <iostream> ...

  4. C中头文件在cpp文件中引用和.h文件引用

    1.编译器会单独编译每个cpp文件.头文件会复制到cpp文件中. 2.有时会遇到这样的一个问题a.cpp要调用b.cpp中的函数,而b.cpp又要调用a.cpp中的函数.这就牵扯到相互调用.这时如果我 ...

  5. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  6. c++ *.h和*.cpp在编译中的作用

    首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了. 一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 如果你不想 ...

  7. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  8. Teradata基础教程中的数据库试验环境脚本

    Teradata基础教程中的数据库表: Customer:  客户信息表 Location:  位置信息表 Employee:  雇员信息表 Job:  工作信息表 Department:  部门表 ...

  9. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

随机推荐

  1. UGUI 锚点坑

    ----------------------------------------------------------------- 关键点:4个实心蓝点距离雪花4瓣的距离永远不变 锚点Anchors: ...

  2. Vuex目录结构推荐

    目录结构如下: - src - store // 在src目录下 新建一个store文件夹 - mutations.js // mutations - mutaions_types.js // mut ...

  3. vs 对网站和项目使用IIS Express 的64位版

  4. IM 通讯录

    wkt-4024 6720

  5. HDU-1263(STL+排序)

    水果 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  6. 洛谷 P3830 [SHOI2012]随机树

    https://www.luogu.org/problemnew/show/P3830 具体方法见代码.. 其实挺神奇的,概率可以先算出“前缀和”(A小于等于xxx的概率),然后再“差分”得到A恰好为 ...

  7. python+selenium问题随记

    1.用PhantomJS跑程序,莫名遇到有些元素的text不能读取,后来发现,PhantomJS运行时也需要最大化,不是全屏模式的话也和界面浏览器一样会造成压盖无法读取信息,开始以为是PhantomJ ...

  8. Linux--NiaoGe-Service-08(路由)

    路由 Linux系统下的路由表是由小到大排列的,即C类地址-->B类地址-->A类地址-->0.0.0.0(默认路由). Linux系统中使用route命令查看路由表 [root@w ...

  9. Nginx pathinfo模式配置

    正常配置 location ~ \.php$ { fastcgi_pass ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $docu ...

  10. ES6语言特性,如何在低版本浏览器运行它

    Introduction ECMAScript 6 于今年6月正式成为了标准,关于ES6,我们最大的疑虑可能是客户端浏览器还没有完全支持它,也就node.js用用. 有很多种手段可以解决这个问题,比如 ...