最近在学习的过程中发现这个问题,因为是学习所以内容对网上的内容有很多参考
在一个C++程序中,只包含两类文件——.cpp文件和.h文件。
一。初步了解
1.头文件的作用: 方便函数的统一的声明
2.头文件也是C++源代码,但不用编译,当.cpp文件需要时通过宏命令 “#include”包含进这个.cpp文件中
3.头文件的写法
#ifndef CIRCLE_H
#define CIRCLE_H //保护措施
//你的代码写在这里
#endif
eg.
在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下:
#ifndef CIRCLE_H
#define CIRCLE_H
class Circle
{
private:
double r;//半径
public:
Circle();//构造函数
Circle(double R);//构造函数
double Area();//求面积函数
};
#endif
要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下:
#include "Circle.h"
Circle::Circle()
{
this->r=5.0;
}
Circle::Circle(double R)
{
this->r=R;
}
double Circle:: Area()
{
return 3.14*r*r;
}
最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下:
#include <iostream>
#include "Circle.h"
using namespace std;
int main()
{
Circle c(3);
cout<<"Area="<<c.Area()<<endl;
return 1;
}
二。那么头文件中到底可以写些什么呢
1.放变量和函数的声明.
2.类 (class)的定义,其中包含着数据成员和函数成员.
3..const对象的定义.
补充:const型即常对象,在任何情况下值都不改变。
4.static对象的定义.
三。C++编译模式
C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。比如,在文件a.cpp中定义 了一个全局函数“void a() {}”,而在文件b.cpp中需要调用这个函数。
问题:如何跨文件调用函数
1.定义头文件并include一下头文件
// file foo.h
# ifndef _FOO_H_
# define _FOO_H_
extern void sayHello();
# endif // _FOO_H_
// file foo.cpp
# include "foo.h"
# include <iostream>
using namespace std;
void sayHello()
{
// say your hello
}
// file main.cpp
# include "foo.h"
int main()
{
sayHello();
return 0;
}
其中函数需要定义为extern类型, 告诉编译器这个是外部的,要到其它文件去找。
eg.
//file1.cpp
extern int a,b;
int main(){
cout<<a<<","<<b<<endl;
return 0;
}
//file2.cpp
int a=3,int b=4;
此时file中的a,b被赋值,extern用作变量声明,并不是定义。
2.也可以直接#include "hello.cpp" //听说不够专业