c语言多组数据拟合线性公式 C成员

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

    分享
    投诉
    首页