运算符重载c ++将int添加到object

时间:2013-05-08 20:22:05

标签: c++ overloading operator-keyword

我刚开始使用运算符重载并试图理解这个概念。所以我想重载运算符+。在我的头文件中,我有

   public:
    upDate();
    upDate(int M, int D, int Y);
    void setDate(int M, int D, int Y);
    int getMonth();
    int getDay();
    int getYear();
    int getDateCount();
    string getMonthName();
    upDate operator+(const upDate& rhs)const;

    private:
        int month;
        int year;
        int day;

所以基本上在我的主要内容中我从upDate创建了一个Object,我想将它添加到int中。

    upDate D1(10,10,2010);//CONSTRUCTOR
    upDate D2(D1);//copy constructor
    upDate D3 = D2 + 5;//add 5 days to D2

如何写入超载,以便为D2增加5天?我有这个,但我很确定语法不正确,仍然出现错误。任何帮助将不胜感激

   upDate upDate::operator+(const upDate& rhs)const

  {

    upDate temp;
    temp.day = this->day+ rhs.day;
    return temp;
 }

3 个答案:

答案 0 :(得分:3)

您需要定义另一个operator +的重载,它将int作为参数:

  upDate upDate::operator+(int days) const{    
    upDate temp(*this);
    temp.day += days;
    return temp;
 }

编辑:正如Dolphiniac所说,您应该定义一个复制构造函数来正确初始化temp

答案 1 :(得分:3)

制作一个复制构造函数,以实际制作this的副本。您的函数返回的对象缺少通常位于this实例中的字段。

答案 2 :(得分:1)

改为重载compound plus运算符。

upDate& upDate::operator+=(const int& rhs)
{
    this->day += rhs;
    return *this;
}

您可以执行类似

的操作
D2 += 5;