学习类的过程的一些记录

这是某次作业的代码,要求创建一个点类,因为不听课,在打代码的过程中遇到许多坑,现在来总结以填坑

#include<iostream>
#include<cmath>
using namespace std;
class Point{
private:
    float x, y;
public:
    Point();//不带参的构造函数
    Point(float xx, float yy);//带参的构造函数
    void set();
    void show();
    Point calc(Point p);
    float getX();
    float getY();
    //这两个函数是得到point类私有数据的关键函数,外部不可以直接访问类的私有数据,需要通过些特殊手段
};

Point::Point()
{
    x = 0;
    y = 0;
}

Point::Point(float xx,float yy)
{
    x = xx;
    y = yy;
}

void Point::set()
{
    cout << "enter the x and y: ";
    cin >> x >> y;
}

void Point::show()
{
    cout << "x = " << x << endl;
    cout << "y = " << y << endl;
}

Point Point::calc(Point p)
{
    Point temp;
    temp.x = (x - p.x) * (x - p.x);
    temp.y = (y - p.y) * (y - p.y);
//类内部函数可以直接使用p.x和p.y来调用数据
    return temp;
}

float Point::getX()
{
    return x;
}

float Point::getY()
{
    return y;
}

float calc_dis(Point p)
{
    float x, y, dis;
    x = p.getX();
    y = p.getY();
//非类内部函数直接用p.x+p.y会报错    
    dis = sqrt(x + y);
    return dis;
}

int main()
{
    Point p2, p3;
    float dis;
    // p1.set();
    Point p1(4, 5);
    Point p4;
    p2.set();
    //p1.show();
    // p2.show();
    p3 = p2.calc(p1);
    dis = calc_dis(p3);
    cout << "distance = " << dis << endl;
    p4.show();
}