zoukankan      html  css  js  c++  java
  • C++の友元の例

    #include<iostream>
    #include<cmath>
    using namespace std;
    class Point
    {
    public:
    Point(double xx,double yy)
    {
    x=xx;
    y=yy;
    };
    void Getxy();
    friend double Distance(Point&a,Point&b);
    private:
    doublex,y;
    };
    void Point::Getxy()
    {
    cout<<"("<<x<<","<<y<<")"<<endl;
    }
    double Distance(Point&a,Point&b)
    {
    double dx=a.x-b.x;
    double dy=a.y-b.y;
    return sqrt(dx*dx+dy*dy);
    }
    int main(void)
    {
    Point p1(3.0,4.0),p2(6.0,8.0);
    p1.Getxy();
    p2.Getxy();
    double d=Distance(p1,p2);
    cout<<"Distanceis"<<d<<endl;
    return 0;
    }

    说明:在该程序中的Point类中说明了一个友元函数Distance(),它在说明时前边加friend关键字,标识它不是成员函数,而是友元函数。它的定义方法与普通函数定义一样,而不同于成员函数的定义,因为它不需要指出所属的类。但是,它可以引用类中的私有成员,函数体中a.x,b.x,a.y,b.y都是类的私有成员,它们是通过对象引用的。在调用友元函数时,也是同普通函数的调用一样,不要像成员函数那样调用。本例中,p1.Getxy()和p2.Getxy()这是成员函数的调用,要用对象来表示。而Distance(p1, p2)是友元函数的调用,它直接调用,不需要对象表示,它的参数是对象。(该程序的功能是已知两点坐标,求出两点的距离。)

  • 相关阅读:
    MyEclipse 快捷键
    Oracle使用split和splitstr函数批量分隔字符串
    linux解压 tar命令
    Crontab的用法
    .net 连接ORACLE中文显示乱码解决方案
    python 列表
    关于ios 11 的问题
    初步了解会计学
    iOS关于直播的链接
    知识链接中.....
  • 原文地址:https://www.cnblogs.com/vonk/p/3862256.html
Copyright © 2011-2022 走看看