当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 一个 C++ 日期类(第一部分)

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 一个 C++ 日期类(第一部分)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 53 ::
收藏到网摘: n/a

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

原著 Chuck Allison

翻译:孟谨


原文出处:Code Capsules:A C++ Date Class, Part 1

本文适合初级读者

  Chuck Allison 是盐湖城圣 Latter Day 教堂总部下耶稣教堂家族历史研究处的软件体系设计师。他拥有数学学士和数学硕士学位。他从1975年起开始编程,从1984年起他开始从事c语言的教学和开发。他目前的兴趣是面向对象的技术及其教育。他是X3J16,ANSI C ++标准化委员会的一员。发送e-mail 到 [email protected],或者拨打电话到 (801)240-4510 均可以与他取得联系。
  上个月的专栏里介绍了一个日期间隔函数,它可以算出任意两个日期之间的年,月和日。这个月的专栏则提出了一个用C++解决该问题的方法。这种方法的本质是创建一种新的数据类型,这种数据类型的行为就像内建的数据类型一样。换句话说,你要从基于函数的方法 (“我想要怎么样做事”)转换到基于对象的方法(“我的问题的原理和对象是什么”)。使用C++非常需要另外一种思考问题的方法。为了实现这个转换,首先要先知道为什么会有C++存在。

关于两种语言的故事

  C++源自80年代早期 AT&T 的 Bjarne Stroustrup 提出的“带类的 C”。他那时正在寻求在 Simula-67 中更快的进行仿真的方法。"class"是 Simula 中用来指用户自己定义的类型的术语,能够定义出非常接近现实的对象,这是进行良好的仿真的关键。有没有一种更好的方法,能够比在c语言--最快的过程化语言中加入"class"的概念更快的进行仿真呢?
  选择C为类提供了一个不仅有效而且灵活的工具。虽然一些其他的语言在C++之前很久就支持通过类来对数据进行抽象,但是C++用的最广泛。几乎每一种主要的具有C语言编译器的平台同样能够支持C++。最后我还听说,C++的用户群每七个月就会翻一番。
  对C++的最初了解是令人吃惊的。如果你是从C语言转过来的话,你需要把下面这些词语加进你的词汇表:抽象类,存取控制,基类,catch子句,类,类的作用域,构造函数,拷贝构造函数,缺省参数,缺省构造函数,delete运算符,派生类,析构函数,异常,异常处理,友元,继承,内联函数,操作符,成员函数,多重继承,嵌套类,new处理函数,new操作符,重载,成员指针,多态,私有,保护,公有,纯虚函数,引用,静态成员,流,模板,this指针,try块,类型安全连接,虚基类,虚函数。
  一个好消息说C++是一种强大的、有效的、面向对象的、能够处理各种复杂应用的语言。坏消息则是这种语言本身就比较复杂,比C语言难掌握。C语言是造成这一问题的一部分。C++是一个混血儿,既有面向对象的特征,又有通用系统编程语言的特征。我们不可能纯粹介绍C++这一系列丰富的新特征而不一点也不考虑C语言本身。对C的兼容性是C++设计时的一个主要目标。正如Bjarne在ANSI C++委员会上所陈述的那样,C++是一种"工程上的折衷",它"要和C语言尽可能的接近,但又不能太接近"。到底要多接近现在还在研究中。

一个渐进的过程

  你可以很有效的使用C++而不需要掌握它的全部。事实上,面向对象的技术承诺说只要开发商做好他们的事情(提供设计良好的、可重用并且可扩展的类库),那么你就可以很容易的开发你的应用程序。目前的产品,比如Borland公司的应用编程接口,在许多方面都证明了这一点。
如果你觉得你必须掌握这门语言,你可以循序渐进并且在这个过程中继续开发你的应用程序。这里有三个必须掌握的地方:

  1. 一个更好的C语言
  2. 数据抽象
  3. 面向对象的编程

  你可以把C++当成一门更好的C语言来使用,因为它更安全更富于表现力。与这一点相关的特征有:类型安全连接,强制函数原型,内联函数,const限定词(是的,ANSI C从C++中借鉴的这个词),函数重载,缺省参数,引用和语言提供的对动态内存管理的支持。你同样需要当心这两种语言不兼容的地方。C语言中有一个强大的子集,Plum 和 Saks 称其做"类型安全的 C"(参见 C++ Programming Guidelines, Plum and Saks, Plum-Hall, 1992)。
  正如我在这篇文章和下一篇文章中所陈述的一样,C++支持数据抽象--用户可以自己定义行为与内建类型相像的数据类型,这种数据抽象机制包括:类,存取限制,构造和析构函数,运算符重载,模板和异常处理。
  面