c语言多组数据拟合线性公式 C成员
C 不亏为难度最大的编程语言之一,单从其函数类型来看,就有成员函数、友元函数、外部函数,函数还可以通过参数类型的差异实现重载,还可以通过模板实现类型的泛化,我来为大家讲解一下关于c语言多组数据拟合线性公式 C成员?跟着小编一起来看一看吧!
c语言多组数据拟合线性公式 C成员
C 不亏为难度最大的编程语言之一,单从其函数类型来看,就有成员函数、友元函数、外部函数,函数还可以通过参数类型的差异实现重载,还可以通过模板实现类型的泛化。
下面就以一个小实例(求两点间的距离)来简单了解其各类函数的使用:
#include<iostream> // 成员、友元、外部、重载、模板函数求两点间的距离
#include<Cmath>
using namespace std;
class CPoint
{
private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0):x(xx),y(yy){}
double dist_m(CPoint &); //参数用const CPoint &更佳
friend double dist_f(CPoint &, CPoint &) ;
double getX(){return x;}
double getY(){return y;}
};
struct SPoint{
double x; // 横坐标
double y; // 纵坐标
SPoint(double xx=0,double yy=0):x(xx),y(yy){}
};
double dist(CPoint &,CPoint &) ; // 外部函数声明
template <typename T,typename V> // 模板函数声明
V distT(T &p1,T &p2);
double dist(SPoint& p1,SPoint &p2); // 重载外部函数声明
int main()
{
CPoint p1(10,13), p2(-5,6);
cout<<"1. "<<p1.dist_m(p2)<<endl; // 成员函数调用
cout<<"2. "<<dist_f(p1,p2)<<endl; // 友元函数调用
cout<<"3. "<<dist(p1,p2)<<endl; // 外部函数调用
double d = distT<CPoint,double>(p1,p2); // 模板函数调用
cout<<"4. "<<d<<endl;
SPoint pt1(10,13), pt2(-5,6);
cout<<"5. "<<dist(pt1,pt2)<<endl; // 重载外部函数调用
system("pause");
return 0;
}
double CPoint::dist_m(CPoint &p) // 成员函数实现
{
double dx=(x-p.x), dy=y-p.y;
return sqrt(dx*dx dy*dy);
}
double dist_f(CPoint &p1,CPoint &p2) // 友员函数实现
{
double dx=(p1.x-p2.x), dy=p1.y-p2.y;
return sqrt(dx*dx dy*dy);
}
double dist(CPoint &p1,CPoint &p2) // 外部函数实现
{
double dx=(p1.getX()-p2.getX());
double dy=p1.getY()-p2.getY();
return sqrt(dx*dx dy*dy);
}
double dist(SPoint& p1,SPoint &p2) // 重载外部函数实现
{
double dx=(p1.x-p2.x), dy=p1.y-p2.y;
return sqrt(dx*dx dy*dy);
}
template <typename T,typename V> // 模板函数实现
V distT(T &p1,T &p2)
{
V dx=(p1.getX()-p2.getX());
V dy=p1.getY()-p2.getY();
return sqrt(dx*dx dy*dy);
}
-End-
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com