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