如何在C++中使用point類(lèi)與運(yùn)算符重載結(jié)合

c++
小樊
82
2024-09-25 01:59:15

在C++中,我們可以使用類(lèi)(class)和運(yùn)算符重載(operator overloading)來(lái)創(chuàng)建一個(gè)名為point的類(lèi),并實(shí)現(xiàn)一些基本的數(shù)學(xué)運(yùn)算。下面是一個(gè)簡(jiǎn)單的示例:

#include <iostream>

class Point {
public:
    // 構(gòu)造函數(shù)
    Point(double x = 0, double y = 0) : x_(x), y_(y) {}

    // 獲取x坐標(biāo)
    double getX() const {
        return x_;
    }

    // 獲取y坐標(biāo)
    double getY() const {
        return y_;
    }

    // 重載加法運(yùn)算符
    Point operator+(const Point& other) const {
        return Point(x_ + other.x_, y_ + other.y_);
    }

    // 重載減法運(yùn)算符
    Point operator-(const Point& other) const {
        return Point(x_ - other.x_, y_ - other.y_);
    }

    // 重載輸出運(yùn)算符
    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;
}

在這個(gè)示例中,我們定義了一個(gè)名為Point的類(lèi),包含了兩個(gè)私有成員變量x_和y_,分別表示點(diǎn)的橫坐標(biāo)和縱坐標(biāo)。我們還定義了一些公共成員函數(shù),如getX()、getY()、operator+()、operator-()和operator<<()。

operator+()和operator-()分別實(shí)現(xiàn)了Point類(lèi)的加法和減法運(yùn)算。這兩個(gè)函數(shù)都接受一個(gè)const Point&類(lèi)型的參數(shù),表示要與之進(jìn)行運(yùn)算的點(diǎn)。在函數(shù)體內(nèi),我們分別計(jì)算兩個(gè)點(diǎn)的橫坐標(biāo)和縱坐標(biāo)之和或之差,并返回一個(gè)新的Point對(duì)象。

operator<<()是一個(gè)友元函數(shù),用于重載輸出運(yùn)算符。這個(gè)函數(shù)接受一個(gè)std::ostream&類(lèi)型的參數(shù)和一個(gè)const Point&類(lèi)型的參數(shù),表示要輸出的點(diǎn)。在函數(shù)體內(nèi),我們將點(diǎn)的橫坐標(biāo)和縱坐標(biāo)以逗號(hào)分隔的形式輸出到指定的輸出流中。

在main()函數(shù)中,我們創(chuàng)建了兩個(gè)Point對(duì)象p1和p2,并分別計(jì)算它們的和p3和差p4。最后,我們將結(jié)果輸出到控制臺(tái)。

0