#include < iostream > // 使用C++新标准的流库
/* 使用C++老标准的流库,读者可将该程序改成使用C++新标准的流库,
修改时最好把Date类定义放在同一个源文件内,并去掉“#include ²tdate.h²”预处理语句 */
//#include \"tdate.h\"
using namespace std; // 将std名空间合并到当前名空间
class Date {
public : // 3个公有成员函数
void setDate(int y = 2000, int m = 1, int d = 1);
// 设置具体的年、月、日,其默认值为2000年 1月1日
int isLeapYear( void ); // 判断该年是否为闰年
void printDate( void ); // 显示具体的年、月、日值
private :
int year, month, day; // 3个私有数据成员,保存具体的年、月、日值
};
void Date::setDate( int y, int m, int d )
{ year = y; month = m; day = d; }
int Date::isLeapYear( void ) // 判断该年是否为闰年
{ return ( year % 4 == 0 // 能被4整除的年份基本上是闰年
&& year % 100 != 0) // 能被100整除的年份不是闰年
|| (year % 400 == 0); } // 能被400整除的年份又是闰年
void Date::printDate( void ) // 显示年、月、日的具体值
{ cout << year <<\ << month << \ << day << endl; }
void main( void )
{ Date date1, date2; // 定义日期类Date 的两个对象date1和date2
date1.setDate(2000, 5, 4); // 给对象date1设置年、月、日的具体值
date2.setDate(2000, 4, 9); // 给对象date2设置年、月、日的具体值
int leap = date1.isLeapYear( );
// 判断对象date1的年份是否为闰年,闰年 leap = 1,否则为0
cout << \"LEAP = \" << leap << endl; // 输出“判断是否为闰年”的结果
date1.printDate( ); // 显示对象date1年、月、日的具体值
date2.printDate( ); // 显示对象 date2年、月、日的具体值
}
例 3.2 Counter 类的定义部分、实现部分和测试程序。
#include < iostream > // 使用C++新标准的流库
using namespace std; // 将std名空间合并到当前名空间
class Counter {
public :
Counter( void ) // Counter类的构造函数,在3.3节介绍
{ value = 0; // 初始化数据成员值
cout << \"Constructor called !\\n\";
// 输出显示调用了本构造函数的信息
}
void increment( void ) // 在允许取值范围内计数器加1
{ if( value < 4294967295 ) value++; }
void decrement( void ) // 当计数器的数据成员值不为0时减1
{ if(value > 0) value--; }
unsigned readValue( void ) // 读计数器的值
{ return value; }
~ Counter( void ) // Counter类的析构函数
{ cout << \"Destructor called !\\n\"; }
// 只输出调用了本析构函数的信息,其他什么也不做
private :
unsigned value; // Counter类的私有数据成员,保存计数值
};
void main( void ) // Counter类的测试程序
{ Counter c1 ,c2; // 定义了Counter类的两个对象c1和 c2
for( int i = 1; i <= 6; i++ ) {
c1.increment ( );
// 在第1个for语句的循环体内6次向对象 c1发送增量运算的消息
cout << \"value of c1 = \" << c1.readValue( ) << endl;
// 每循环一次,显示对象c1的计数值
c2.increment( ); // 同样6次向对象c2发送增量运算的消息
}
cout << \"After loop ,value of c2 = \" << c2.readValue( ) << endl;
// 循环完成后,显示对象c2的计数值。
for( int i = 1; i <= 5; i++ )
c2.decrement( );
// 在第2个for语句的循环体内5次向对象 c2发送减量运算的消息
cout << \"Final value of c1 = \" << c1.readValue( )
<< \ << c2.readValue( ) << endl;
} // 显示对象c1和c2最终的计数值