问题 单项选择题

有以下程序:
#include <iostream>
using namespace std;
static int days[]= 31,28,31,30,31,30,31,31,30,31,30,31 ;
class date

private:
int month,day,year;
public:
date( int m,int d,int y )

month = m;
day = d;
year = y;

date()

void disp()

cout<<year<<"-"<<month<<"-"<<day<<end1;

date operator+( iht day )

date dt = * this;
day += dt.day;
while ( day > days[ dt.month - 1 ] )

day -= days[ dt.month - 1 ];
if ( ++dt.month == 13 )

dt.month = 1;
dt.year++;


dt.day = day;
return dt;

;
int main()

date dl( 6, 20, 2004 ), d2;
d2 = dt + 20;
d2.disp();
return 0;

执行后的输出结果是( )。

A.2004-7-10

B.2004-6-20

C.2004-7-20

D.程序编译时出错

答案

参考答案:A

解析: 本题通过将“+”运算符重载为类date的成员函数实现简单的对象加法。类date中的“+”运算符重载函数中,将传入的实参值day,加到类date的私有成员变量day上,并实现变量month和year的相应变化,从而达到日期对象相加的目的。

单项选择题
单项选择题