温馨提示×

如何在C++中使用point类与运算符重载结合

c++
小樊
82
2024-09-25 01:59:15
栏目: 编程语言

在C++中,我们可以使用类(class)和运算符重载(operator overloading)来创建一个名为point的类,并实现一些基本的数学运算。下面是一个简单的示例:

#include <iostream>

class Point {
public:
    // 构造函数
    Point(double x = 0, double y = 0) : x_(x), y_(y) {}

    // 获取x坐标
    double getX() const {
        return x_;
    }

    // 获取y坐标
    double getY() const {
        return y_;
    }

    // 重载加法运算符
    Point operator+(const Point& other) const {
        return Point(x_ + other.x_, y_ + other.y_);
    }

    // 重载减法运算符
    Point operator-(const Point& other) const {
        return Point(x_ - other.x_, y_ - other.y_);
    }

    // 重载输出运算符
    friend std::ostream& operator<<(std::ostream& os, const Point& point) {
        os << "(" << point.x_ << ", " << point.y_ << ")";
        return os;
    }

private:
    double x_;
    double y_;
};

int main() {
    Point p1(3, 4);
    Point p2(1, 2);

    Point p3 = p1 + p2;
    Point p4 = p1 - p2;

    std::cout << "p1 + p2 = " << p3 << std::endl;
    std::cout << "p1 - p2 = " << p4 << std::endl;

    return 0;
}

在这个示例中,我们定义了一个名为Point的类,包含了两个私有成员变量x_和y_,分别表示点的横坐标和纵坐标。我们还定义了一些公共成员函数,如getX()、getY()、operator+()、operator-()和operator<<()。

operator+()和operator-()分别实现了Point类的加法和减法运算。这两个函数都接受一个const Point&类型的参数,表示要与之进行运算的点。在函数体内,我们分别计算两个点的横坐标和纵坐标之和或之差,并返回一个新的Point对象。

operator<<()是一个友元函数,用于重载输出运算符。这个函数接受一个std::ostream&类型的参数和一个const Point&类型的参数,表示要输出的点。在函数体内,我们将点的横坐标和纵坐标以逗号分隔的形式输出到指定的输出流中。

在main()函数中,我们创建了两个Point对象p1和p2,并分别计算它们的和p3和差p4。最后,我们将结果输出到控制台。

0