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

  这么说吧 我们可能会自定义很多函数 而这些函数分别会在不同的地方被调用 甚至有些时候我们需要把一堆函数打包起来一起调用 比如#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. PostgreSQL 务实应用(三/5)分表复制

    问题的提出 在项目中,有些表的记录增长非常快,记录数过大时会使得查询变得困难,导致整个数据库处理性能下降.此时,我们会考虑按一定的规则进行分表存储. 常用的分表方式是按时间周期,如每月一张,每天一张等 ...

  2. 基于GPU的优化处理

    http://www.cnblogs.com/wuhanhoutao/archive/2007/11/10/955293.html 早期的三维场景绘制,显卡只是为屏幕上显示像素提供一个缓存,所有的图形 ...

  3. hdu1850(nim博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850 题意:中文题诶- 思路:nim博弈 可以将本题抽象成一般nim博弈,那么有: 1. 对于所有元素 ...

  4. [Xcode 实际操作]二、视图与手势-(7)UIView视图的渐变填充

    目录:[Swift]Xcode实际操作 本文将演示创建一个具有渐变填充色的图形 import UIKit class ViewController: UIViewController { overri ...

  5. IT兄弟连 JavaWeb教程 JSP内置对象1

    JSP内置对象定义 JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它们起到了简化页面的作用,JSP的内 ...

  6. bzoj1130:[POI2008]POD Subdivision of Kingdom

    传送门 看到数据范围这么小,不由得算了一下暴力复杂度,算出来情况一共只有1e7,不多,再乘上暴力判断的复杂度,好像T了,判断的话位运算可以方便解决 但是我写的优化似乎比较渣,还留了个log,但是还是n ...

  7. [題解](單調隊列dp)luogu_P1725琪露諾

    比較簡單的單調隊列,但是有一些要注意的 維護單調隊列的時候裡面存的是入隊時間,而不是i,因為前面有l個沒有入隊(不可能走進),所以把i减一个l以达到延迟入队的效果 #include<bits/s ...

  8. BOM主要对象属性方法总结

    BOM window对象 浏览器实例,全局对象 1.窗口位置: screenTop,screenLeft(screenX,screenY):窗口相对于屏幕左边和上边的位置 moveTo(x,y):将窗 ...

  9. ZROI 普及组模拟赛02总结

    ZROI 普及组模拟赛02总结 先放[网址][http://zhengruioi.com/contest/96] 可能是有一段时间没有打这种正式的比赛了,今天打的很奇怪... T1 模拟水题 既然是普 ...

  10. [洛谷P2186] 小Z的栈函数

    题目链接: 传送门 题目分析: 大模拟,先得存操作,然后再处理每个数-- 有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了-- 总之就是个模拟题--没 ...