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)是友元函数的调用,它直接调用,不需要对象表示,它的参数是对象。(该程序的功能是已知两点坐标,求出两点的距离。)

  • 相关阅读:
    C/C++的区别
    stm32之UCOS-III
    PID控制及整定算法
    PCB设计基础及技巧
    电路的一些基本理论
    stm32与三菱PLC通信
    stm32之外设控制
    stm32之内部功能
    JavaScript数组方法详解
    git新建关联克隆仓库指令
  • 原文地址:https://www.cnblogs.com/vonk/p/3862256.html
Copyright © 2011-2022 走看看