在下面程序的横线处填上适当的内容,使程序执行后的输出结果为1/2005。 #include <iostream.h> using namespace std: class Date publ

admin2010-12-16  24

问题 在下面程序的横线处填上适当的内容,使程序执行后的输出结果为1/2005。
        #include  <iostream.h>
        using namespace std:
        class Date
        public:
           Date  (int m=1,int  y=0):month(m .year(y}{}
           void  Print() {cout<<month<<"/"<<year<<end1;}
           ______operator+(const Date&  d1,const  Date&d2;
        private:
           int month year;
        };
       ______operaror+(const Date&d1,const Date&  d2)
           int  year, month;
           year=d1.year+d2.year;
           month=d1.month+d2.month;
           year+=(month-1)/12;
           month=(month-1)%12+l;
           return  Date{month, year}:
       }
       void main()
       {
           Date d1(3,2004),d2,d3(10);
           d2=d3+d1;
           d2.Print();
        }

选项

答案friend Date; Date

解析 本题考核类与对象、运算符的重载。题中运算“+”重载函数中的参数表中有两个参数,所以是作为友元函数重载(因为“+”是一个二元运算符,作为成员函数重载时参数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中),实现的功能是将参数对象中的成员变量month、year的进行对应相加,实现年月的相加-题中运算符重载函数的返回值的类型是类Date,所以第一个空格处填入"friend Date"。第二个空格处完善运算符重载函数的定义,缺少的是函数返回值的类型“Date”
转载请注明原文地址:https://kaotiyun.com/show/HOjp777K
0

最新回复(0)