问题 填空题

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为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 Datemonth, 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”

单项选择题
名词解释