平台:VC++ 2005 测试通过!
.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件。
它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 twod.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
这些都是使用应用程序向导生成的 VC++ 文件故不列出
我只列出程序主要部分!
/*********************************************************************
本示例展示了this pointer,static member,
static member function的使用
*********************************************************************/
// CDatePro.h
#include <iostream>
using namespace std;
class Date {
private:
int _d,_m,_y ;
//Date对象计数器
static int _NumOfObj;
public:
Date(int d, int m, int y);
int day()const{return _d;};
int month()const{return _m;};
int year()const{return _y;};
bool operator > (const Date& Rdate);
static Date default_date;
//修改静态成员值的静态函数
static void set_default(int dd, int dm ,int dy);
static int NumberOfObj(){return _NumOfObj;};
};
Date::Date(int d=0, int m=0, int y=0 ){
_d = d; _m = m; _y = y;
if (this != &default_date) _NumOfObj++;
};
bool Date::operator > (const Date& Rdate){
if (this->_y > Rdate._y)
return true;
else if ((this->_y == Rdate._y)&&(this->_m > Rdate._m))
return true;
else if ((this->_m == Rdate._m)&&(this->_d > Rdate._d))
return true;
return false;
};
void Date::set_default(int dd, int dm ,int dy){
default_date._d = dd;
default_date._m = dm;
default_date._y = dy;
};
//初始化static成员
int Date::_NumOfObj = 0;
Date Date::default_date(0,0,0);
// CDatePro.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "CDate.h"
int _tmain(int argc, _TCHAR* argv[])
{
int day,month,year; bool response = true; char c;
cout <<"请输入系统初始日期: "<<endl;
cout <<"日: "; cin >> day;
cout <<"月: "; cin >> month;
cout <<"年: "; cin >> year;
Date::set_default(day,month,year);
cout <<"系统的初始日期是: "<<endl;
cout <<Date::default_date.day()<<"/"
<<Date::default_date.month()<<"/"
<<Date::default_date.year()<<endl;
cout <<"xxxxxxxxxxxxxxxxxxxxxx"<<endl;
while( response ){
cout <<"请输入日期"<<endl;
cout <<"日: "; cin >> day;
cout <<"月: "; cin >> month;
cout <<"年: "; cin >> year;
Date user_date(day,month,year);
if(user_date > Date::default_date){
cout <<"用户输入的日期是:/n"
<<user_date.day()<<"/"
<<user_date.month()<<"/"
<<user_date.year() <<endl;
cout <<"该日期大于系统默认日期!"<<endl;
};
cout <<"想继续测试吗? (y/n) "<<endl;
cin >> c;
if (c =='n')
response = false;
}
cout <<"xxxxxxxxxxxxxxxxxxxxxx"<<endl;
Date d2(4,6,2005),d3(4,5,2000),d4(4,6,2000);
cout <<"d2 is: "<<d2.day()<<"/"<<d2.month()<<"/"<<d2.year()<<endl;
cout <<"d3 is: "<<d3.day()<<"/"<<d3.month()<<"/"<<d3.year()<<endl;
cout <<"d4 is: "<<d4.day()<<"/"<<d4.month()<<"/"<<d4.year()<<endl;
cout <<"程序中所生成的对象个数是: " <<Date::NumberOfObj() <<endl;
return 0;
}