c++为什么要实现(.cpp)和声明(.h)分开?

为什么要有透明性?如果别人不关心实现,他可以折叠代码(现在的IDE几乎都支持),只看函数原型和注释。

不考虑需要替换【实现方法】的情况。
不考虑继承、多态、虚函数等。
加上#pragma once,不考虑重定义。

1、增加程序的可读性;
2、将代码写在一个.cpp文件中,代码过于冗长,增加调错的难度;
3、声明与实现分开,增加可移植性,使得代码的复用性得以提高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-04
楼上说的不对啊,分开定义根本目的并不是说重定义。就算你把函数定义在一个文件里面,照样可以的,不然前向声明还能存在吗?分开定义首先是为了简洁,谁会觉得把函数声明和定义都放在一个文件里面好?第二,在程序设计中,编写人员可能只提供一个.lib文件和头文件或DLL文件,使用者便可以应用到自己的程序中,也是方便了隐藏代码。不全面,请谅解。追问

提供.lib&.dll也是为了隐藏代码对吗?这个(即实现了透明性)有什么好处?

追答

也不全是为这个啊。Lib文件和Dll文件是经过编译的,所以使用者使用的时候编译速度较纯写代码快很多。而且Dll函数也有导出函数和非导出函数。使用者只能使用导出函数。

本回答被提问者采纳
第2个回答  2014-02-04
不分开会出现重定义错误,你可以自己试试,h文件写个函数,
两个cpp文件都括入,编译就报错了追问

假设我加上#pragma once,不会重定义,还有别的原因吗?

追答

你真试过吗,编译可以,链接也能通过?

相似回答