c++的拷贝构造函数的多文件问题
定义一个类放在一个头文件中名字叫point.h,而把类的拷贝构造函数放在源文件point.cpp中,用#include "point.h"这个头文件放在main.cpp应用程序中,请问只包含这个头文件,在程序中如果实现拷贝构造函数,能不能实现,因为类的拷贝构造函数的实现放在point.cpp中,请说下原因???
追问:那如果我把你上面的程序aaa.cpp,bbb.cpp改成aaa.h,bbb.h,也就是把程序写成头文件里,然后用在ccc.h中包含void go1();void go2();在主函数中会不会出错??为什么??
答案:这个是可以的。你要注意头文件的作用,它的存在主要就是为了代码分离,实现核心代码隐藏。也就是说使用的时候只需要包含.h文件就行,系统知道该如何找到对应的函数实现。
要注意的是头文件只是一个接口,与cpp可以是一对一、一对多、多对一、多对多的关系。
举个例子
aaa.cpp内容如下:
--------------------------------------------
#include <iostream>
using namespace std;
void go1()
{
cout << 1 << endl;
}
bbb.cpp内容如下:
-----------------------------------------
#include <iostream>
using namespace std;
void go1()
{
cout << 1 << endl;
}
ccc.h内容如下:
---------------------------------
void go1();
void go2();
main.cpp内容如下:
--------------------------------
#include "ccc.h"
int main()
{
go1();
go2();
return 0;
}
以上四个文件,这样相互组合能不能运行呢?
答案是肯定的。
这个例子足以证明:
.h与.cpp没有名称和数量上的关联,也就是说,在这个工程里的所有cpp函数,都可以通过一个或者若干个头文件传递给main函数。
.h文件所要做的,仅仅是把各个函数的声明收集起来,在被main.cpp或者其他的cpp包含即可,至于其内的各个函数到底在什么位置,是没有必要关心的。同样,你可以把所有的函数写到一个cpp中,而用多个头文件进行分割,原理是相同的。
上一个:VC++上怎么用C++实现多线成?
下一个:谁会用visual studio 2008编写c++程序?