当前位置:首页 C++ > 正文

C++ Date类运算符重载

作者:野牛程序员:2024-01-03 20:45:47 C++阅读 2633

Date类的运算符重载可以在C++中执行日期对象的各种操作。以下是一个简单的示例,演示如何在Date类中重载一些基本的运算符,包括加法、减法和比较运算符。

#include <iostream>

class Date {
public:
    int day, month, year;

    // 构造函数
    Date(int d, int m, int y) : day(d), month(m), year(y) {}

    // 重载加法运算符
    Date operator+(const Date& other) const {
        Date result = *this;
        result.day += other.day;
        result.month += other.month;
        result.year += other.year;

        // 处理进位
        if (result.day > 31) {
            result.day -= 31;
            result.month++;
        }
        if (result.month > 12) {
            result.month -= 12;
            result.year++;
        }

        return result;
    }

    // 重载减法运算符
    Date operator-(const Date& other) const {
        Date result = *this;
        result.day -= other.day;
        result.month -= other.month;
        result.year -= other.year;

        // 处理借位
        if (result.day < 1) {
            result.day += 31;
            result.month--;
        }
        if (result.month < 1) {
            result.month += 12;
            result.year--;
        }

        return result;
    }

    // 重载比较运算符
    bool operator==(const Date& other) const {
        return (day == other.day) && (month == other.month) && (year == other.year);
    }

    bool operator!=(const Date& other) const {
        return !(*this == other);
    }
};

int main() {
    // 创建两个日期对象
    Date date1(10, 3, 2022);
    Date date2(5, 2, 2023);

    // 使用重载的加法运算符
    Date resultAdd = date1 + date2;
    std::cout << "Date after addition: " << resultAdd.day << "/" << resultAdd.month << "/" << resultAdd.year << std::endl;

    // 使用重载的减法运算符
    Date resultSub = date1 - date2;
    std::cout << "Date after subtraction: " << resultSub.day << "/" << resultSub.month << "/" << resultSub.year << std::endl;

    // 使用重载的比较运算符
    std::cout << "Are the dates equal? " << (date1 == date2 ? "Yes" : "No") << std::endl;

    return 0;
}

此示例仅包含了基本的加法、减法和比较运算符重载。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击