3-7 类的友元函数的应用

题目描述

通过本题目的练习可以掌握类的友元函数的定义和用法

要求设计一个点类Point,它具有两个double型的数据成员x,y。为该类设计构造函数。并为其添加一个友元函数用于计算并输出两点间的距离;再添加一个输出成员函数用于输出点的信息。

并编写主函数,实现以下的输入输出内容。

输入

4个double型的数,中间用一个空格间隔。

输出

输出数据共3行,前两行用于显示要求距离的两个点的信息,第三行显示两点的距离。

示例输入

5 6 2 3

示例输出

The first point is the coordinate:X=5,Y=6
The second point is the coordinate:X=2,Y=3
The distance between the two points is:4.24264
#include <iostream>
#include <cmath >
using namespace std;
class point
{
private:
    double x;
    double y;
    double x1;
    double y1;
public:
    friend void distance(point &);
    void setpoint()
    {
        cin>>x>>y>>x1>>y1;
    }
    void showpoint()
    {
        cout<<"The first point is the coordinate:X="<<x<<",Y="<<y<<endl;
        cout<<"The second point is the coordinate:X="<<x1<<",Y="<<y1<<endl;
    }
};
void distance(point &a)
{
    double k,j;
    j=(a.x-a.x1)*(a.x-a.x1)+(a.y-a.y1)*(a.y-a.y1);
    k=sqrt(j);
    cout<<"The distance between the two points is:"<<k<<endl;
}
int main()
{
    point d;
    d.setpoint();
    d.showpoint();
    distance(d);
    return 0;
}

时间: 2024-10-12 15:40:03

3-7 类的友元函数的应用的相关文章

在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数

看视频教程说不能在c++ 模板类外写 操作符重载函数,并且是模板类的友元函数 我试了试,可以,放出测试代码: #include <iostream> using namespace std; template<typename T> class A { public: A(T a) { this->a = a; } template<typename T> //加上这句就可以了 friend A<T> operator+(A<T> &

【C/C++学院】0819-/类的成员函数与const-mutable /构造与析构/拷贝构造deletedefault以及深浅拷贝/静态成员函数成员变量类在内存的存储默认参数/友元类以及友元函数

类的成员函数与const-mutable 成员函数 Fushu.h #pragma once #include <iostream> class fushu { public: int x; int y; public: fushu(); ~fushu(); void show(); inline void showall(int x, int y);//显式内联 void setxy(int x, int y);//编译器优化,默认隐式内联 void show(int x, int y);

sdut 3-7 类的友元函数的应用

3-7 类的友元函数的应用 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握类的友元函数的定义和用法 要求设计一个点类Point,它具有两个double型的数据成员x,y.为该类设计构造函数.并为其添加一个友元函数用于计算并输出两点间的距离:再添加一个输出成员函数用于输出点的信息. 并编写主函数,实现以下的输入输出内容. 输入 4个double型的数,中间用一个空格间隔. 输出 输出数据共3行,前两行用于显示要求距离的两个点的信息

模板类的友元函数

非模板友元函数 模板类的非模板友元函数是说该模板类的友元函数只是一个普通函数,并且该函数是非模板函数或该函数不视为模板函数.这里包含了两种情况,下面分别就两个例子进行说明. • 函数是非模板函数 这一类友元函数特点是不带有参数列表,例如:friend void Fn().这类友元函数通常可以用于全局对象的访问. #include <iostream> using namespace std; template <class T> class MyNumber { private:

类模板友元函数坑死人不偿命的错误

错误例程: #include<iostream> using namespace std; template<class T> class Student { private: T age; public: Student(T age_) :age(age_){} friend bool operator==(const Student<T>& s1, const Student<T>& s2); }; int main() { Studen

4 C++基础4 类 const函数 转全局函数 返回*this 数组类。友元 函数 类 操作符重载

1,请问类中函数 const修饰的谁? [email protected]:~/c++$ cat main.cpp  #include <iostream> #include <stdlib.h> using namespace std; class A { public: //const的三种写法 //const void fun(int a,int b) //void const fun(int a,int b) //void fun(int a,int b) const vo

C++ 友元类,友元函数

//友元函数 友元类 #include<iostream> using namespace std; class PointB { public: friend class PointC; //类PointC是类PointB的友元类--意味着类PointC对象可以调用PointB中所有的成员 void Test(){ ; } private: int x; int y; }; class PointC { public: void printfPointB(){ //调用其友元类的私有属性 c

static 类中的静态成员,组合类,友元函数 ,内部类

static 表示静态的意思 在c++中有两种表示 ,静态成员变量和静态成员函数 一个类中的静态成员只属于当前类,不属于某个对象.一个类的静态成员只有一份由当前类所有,每个对象都可以访问静态成员,当然也可以通过类名来访问 这里推荐用类名::静态成员来访问 static 成员函数应该在所有的成员函数之外初始化 如果不初始化系统默认为0 static 成员函数只能访问static成员 static成员函数  ,函数体内不能使用this指针 在我前前面已经说过组合类的概念了,今天我再介绍两个类,友元,

组合类,友元函数 ,内部类,

在我前前面已经说过组合类的概念了,今天我再介绍两个类,友元,以及内部类. 组合类,就是一个类中有另一个类的对象,如声明一个class  penson,成员变量有姓名,年龄,出生日期等,在声明一个date类,这个类里面就是存的年月日的信息,因此我们可以将person类的出生日期设为date类,这就构成了一个组合类. 友元的概念,就像是我们的朋友,比如说  小红说小明是她的朋友,那么对于小红来说,小明肯定有别人所没有的特权(为什么是段子手小明啊 ,老王呢?)因此,类举到我们的类中,就是说,一个类可以