在C++中,函数分文件编写一般有四个步骤:
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件写函数的定义
下面以一个实例为说明对象:
我们要实现一个功能,给出一个圆,和一个点,判断该点是否在这个圆内。
首先,我们创建一个代表“点”的头文件(pointer .h),在这个头文件中写一个类,代码如下:
#include<iostream>
using namespace std;
class pointer {
public:
void setX(int X);//设置X坐标值
int getX(); //获取X坐标值
void setY(int Y);//设置Y坐标值
int getY(); //获取Y坐标值
private:
int x;
int y;
};
在这个头文件中,我们只给出了函数的声明。
其次,我们创建一个pointer.cpp的源文件,在该文件中给出函数的定义:
#include "pointer.h"
void pointer::setX(int X) {
x = X;
}
int pointer::getX() {
return x;
}
void pointer::setY(int Y) {
y = Y;
}
int pointer::getY() {
return y;
}
注意: 类中函数定义的写法与普通函数写法不同
之后,是创建一个代表圆的类,与上述写法类似:
头文件:circle.h
#include<iostream>
#include "pointer.h"
using namespace std;
class Circle {
public:
void setcircleR(int R); //设置圆的半径R
int getcircleR(); //获取圆的半径R
void setcircleC(pointer C); //设值圆心坐标(x,y)
pointer getcircleC(); //获取圆心坐标(x,y)
private:
int m_r;
pointer m_center;
};
源文件:circle.cpp
#include "circle.h"
void Circle::setcircleR(int R) {
m_r = R;
}
int Circle::getcircleR() {
return m_r;
}
void Circle::setcircleC(pointer C) {
m_center = C;
}
pointer Circle::getcircleC() {
return m_center;
}
最后是主函数写法:
#include<iostream>
#include "circle.h"
#include "pointer.h"
using namespace std;
void Isincircle(Circle &c1, pointer &p) {
int distance = (c1.getcircleC().getX() - p.getX())*(c1.getcircleC().getX() - p.getX()) + (c1.getcircleC().getY() - p.getY())*(c1.getcircleC().getY() - p.getY());
int r_distance = c1.getcircleR()*c1.getcircleR();
if (distance > r_distance) {
cout << "点在圆外"<<endl;
return;
}
else if (distance == r_distance) {
cout << "点在圆上" << endl;
return;
}
else {
cout << "点在圆内" << endl;
return;
}
}
int main() {
Circle c1;
pointer center;
c1.setcircleR(10);
center.setX(0);
center.setY(0);
c1.setcircleC(center);
pointer p;
p.setX(8);
p.setY(0);
Isincircle(c1, p);
system("pause");
return 0;
}