当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

一个 C++ 日期类(第二部分)

当使用日期的时候你经常需要确定某一日期是否在另一日期之前。我将为日期类增加下面这个成员函数(参见 Listing 1):
 
 int compare(const Date& d2) const;

  Date:compare 类似于strcmp-如果当前对象(*this)在d2之前,它返回一个负整数;如果这两个日期相同,则返回0;否则返回一个正整数(参见 Listing 2 中的函数实现和 Listing 3 中的示例程序)。就像你们都很熟悉的C标准库中的qsort一样,你也可以使用Date::compare来对日期进行排序,就好像你使用strcmp对字符串进行排序一样。下面是一个可传递给qsort的比较函数(下个月的代码封装将包括qsort):
 
 #include "date.h"
int datecmp(const void *p1, const void *p2)
{
  const Date
  *d1p = (const Date *) p1,
  *d2p = (const Date *) p2;
  return d1p->compare(*d2p);
}

  运算符重载

  大多数时候,拥有相关的运算符是更方便的,例如:
 
 if (d1 < d2)
 // do something appropriate..

  使用Date::compare来添加一个"小于"运算符是非常容易的——只要在类的定义里插入下面这个内联成员函数就可以了:
 
 int operator<(const Date& d2) const
{return compare(d2) < 0};

  每一个表达式:d1 < d2出现的地方,都会被编译器翻译成函数调用的形式:
 
 d1.operator<(d2)

 

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接