c++中xx.h和xx.cpp之间有什么联系
是可以全部写在*.cpp文件的。但从编程习惯或者说是编程规范来说,还是应该分开的。不是很严格的讲,*.h文件做的是类的声明,包括类成员的定义和函数的声明,而*.cpp文件做的类成员函数的具体实现(定义)。一个*.h文件和*.cpp文件一般是配对的。在*.cpp文件的第一行一般也是#include"*.h"文件,其实也相当于把*.h文件里的东西复制到*.cpp文件的开头。所以,你全部写在*.cpp文件其实也是一样的。除了编程规范外,还涉及到类一个重要性质,就是封装性。比如现在我们公司和另一家软件公司合作,这样就必然要互相提供一些软件的信息(比如一些类,它到底是要做什么的),可是在提供这些信息的同时我们又不像让对方知道我们这些类的具体实现,毕竟这些是我们公司的算法核心和心血啊。所以这个时候就可以把类的接口(这个类是要做什么的)放在*.h文件中,而具体类的实现放在 *.cpp文件。这时候我们只要给对方公司*.h文件就行了。这样既提供了必要的信息,又保护了我们的核心代码。建议按照*.h *.cpp配对分开写,平时可以去网上下些C++的工程源代码文件,多看看别人为什么这样分开,加上自己多这样实践,慢慢地,你会体会到这样写的好处的。打得好累,望采纳,也祝你进步!^-^
误人子弟的家伙,你们不要乱说,冒火。这种机制的原理,并没有被太多的人认识清楚,或者只是被片面的认识,即使是使用C++工作过多年的人也不一定清楚,我犯过这个错误,碰巧有高手指导,所以明白 最表面的机制是:头文件是程序的界面(是代码界面),提供给程序员以 类、模版、函数等一系列的声明,让程序员知道应该怎么调用里面的“东西”。从动态链接库的角度看:头文件提供界面,使得程序员在需要加载一个库函数的时候(这里也仅仅是举简单的例子)查看头文件就知道怎么加载这个动态库内部的函数。 从软件的扩展来说:将头文件作为界面,再去定义它的实现,这样只要保证界面不变(头文件不变),就可以只修改实现文件,而不必修改其他的实现代码。比如你有一个sort()函数来排序,在一个大程序中,你后来发现这个sort()有更好的算法,于是你只需要去修改函数的实现(修改.cpp文件的sort()函数的代码),其他使用这个函数的地方可以完全保持不变,这是分割技术的第一个好处。 从模块性来讲:界面后面隐藏实现代码,代码具有更好的物理模块性,减小程序的复杂度。 从编译的角度看:所有源文件都是被编译器分别划分单元来分别编译,在编译的过程中,头文件被嵌入到实现文件里面一起作为一个编译单元被编译(实现文件filename.cpp里的#include "filename.h"那一行被替换成filename.h里面的所有内容(实际上会把预处理指令去掉,这才是预处理最本质的作用))。举一个简单的例子,你定义了sort()函数,在test.h头文件里声明,在test.cpp里定义,这个时候在test.cpp里面#include "test.h",并定义sort)()函数。你需要在头文件内部写预处理代码#ifndef _TEST_H_#define _TEST_H_/*中间是该头文件的一系列声明*/#endif预处理指令防止头文件被多重包含,如果你的代码出现了诡异的错误,请注意这个问题,可能是你没有写头文件保护,在符号链接阶段链接器发现有多个相同的名字,它不知道应该跟哪一个符号链接在一起,所以报错。 从节约时间的角度看:在一些大型项目里面,编译一个项目不是整个一起同时编译的,一般情况是分别交给几个负责人去编译,测试,最后链接起来。如果中间发现有一个实现文件有BUG,只需要修改这个.cpp文件,其他的文件就可以原封不动。再重新编译的时候,只需要单独便宜修改过的这一块,其他的部分不动。然后再链接成可执行程序。这种机制在一个可能完整编译需要花费超级计算机几天时间的项目上是非常有用的,想一下,没有这种机制,要是一个程序随便修改一个地方。这个程序就要花几天时间来编译,这事情,怎么了得? 使用连接器的两个原因:1.编译成目标文件的时候代码的内部符号被编译器修改过。2.目标文件被组织成一个整的大型文件,所有符号被定位,保证每一个函数调用都找得到他本身的定义位置 只有 jaycnvip 说的稍微挂普,其他的人在胡说,不知道这些原理都没错,但是不知道还拿出来乱说就有错。
文章标签:
来自:Cpp
本文链接:https://www.u1e.cn/baike/a/32c29388fa1e1f112d3356b3 [复制]
猜你喜欢
不图虚名,不慕奢华。
不管发生什么,你都不要放弃,肯定会有意想不到的风景。也许不是你本来想走的路,可是另一条路有另一条路的风景,不要念念不忘原来的路,在这里你会遇到难忘的更好的风景。
在遥远的城市,陌生的地方,有他未曾见过的山和海。
俗话说:一百种人有一百种命运,有的人可以一条路一直走到底,有的人却注定要曲曲折折,不过谁也不需要羡慕谁。最重要的是:我们迟早会遇上。
人总要找点事情做,让自己忙起来,忙起来才知道生活不易,才明白平时的忧伤都是矫情。
等一阵风,等一阵雨,等一个唯一的你。
你们给我挺住,都别吃,都那么肥了怎么还有脸吃。
如果不醒来,那么现实和梦境又有何分别。
天塌下来你顶着,我垫着!
最美的不是下雨天,是陪你一起躲过的屋檐。
南音少女
如果坚强的人落泪了,一定是撑不下去了。
您是一棵大树,春天倚着您幻想,夏天倚着你繁茂,秋天倚着您成熟,冬天倚着您沉思。亲爱的妈妈,感谢给予我的一切。
暗恋你,追你,我的本子满满写着你的名字。
得意时处之泰然,失意时处之淡然,才是人生的大智慧。
不必因昨天的眼泪、湿了今天的太阳。
你自由了,可不可以把我的快乐还我。
疾病是手段,健康是目的;疾病是道路,健康是目标。
恋爱不是谈的,是坠入的。有一天,在没有察觉到的时候,头朝下坠下去。早安!
无论平静还是灿烂,我都喜欢。
歇后语大全
站在河岸捞月亮是什么意思?
站在岸边看翻船是什么意思?
夜莺学乌鸦叫是什么意思?
要饭的打竹板是什么意思?
衙门里打官司是什么意思?
小鬼见佛陀(释迦牟尼)是什么意思?
王府的差役是什么意思?
头上害疮是什么意思?
偷鸡打店主是什么意思?
堂屋里挂狗皮是什么意思?
耍戏法的敲锣是什么意思?
玩把势的绝技是什么意思?
收割了的庄稼地是什么意思?
热身子滚到冰窖里是什么意思?
青蛙跳塘是什么意思?
骑马上独木桥是什么意思?
七十岁学气功是什么意思?
剖开墨鱼肚是什么意思?
娘胎里带来的是什么意思?
泥鳅打鼓是什么意思?
拿着棒槌缝衣服是什么意思?
帽子里搁砖头是什么意思?
盲人不问路是什么意思?
麻面姑娘爱搽粉,瘌痢姑娘爱戴花是什么意思?
眉毛上搭梯子是什么意思?
麻雀啄鸡子儿(鸡蛋)是什么意思?
落在陷阱里的骏马是什么意思?
林冲看守草料场是什么意思?
老鼠跌进米囤里是什么意思?
老虎借猪狗借骨是什么意思?
臼间老鼠是什么意思?
毽子上的鸡毛是什么意思?
见了苍蝇都想扯条腿是什么意思?
后半夜做美梦是什么意思?
耗子爬到树梢上是什么意思?
好女嫁丑汉是什么意思?
光腚系围裙是什么意思?
粪车掉轮子是什么意思?
短的当棒槌,长的做房梁是什么意思?
跌倒还要抓把沙是什么意思?
大厅里放盆火是什么意思?
串起来的螃蟹是什么意思?
赤膊钻进蒺藜(ji li一年生草本植物。果皮有尖刺)窝是什么意思?
吃了芋头不下肚是什么意思?
草帽烂了边是什么意思?
被面补抹子是什么意思?
半天云里扭身歌是什么意思?
半斤换八两是什么意思?
巴掌打空气是什么意思?
矮子里面拔将军是什么意思?
相关推荐
还没有人回应过