问题 单项选择题

有以下程序: #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的相应变化,从而达到日期对象相加的目的。

单项选择题
单项选择题