一个C++日期类(第一部分)
值(参见 Listing 8)。因为具有私有成员是更普遍的情况,我通常用 class 关键字取代struct, 默认情况下其成员为 private (参见 Listing 9)。类似 get_month 这样的 存取函数不改变一个日期类的私有部分,因此我声明它们为 const 成员函数。(Date::interval()也是一个 const ——别忘了在实现文件 date3.cpp 中它的定义前加 const。) 现在我必须用 tdate3.cpp (参见 Listing 10)中的存取函数调用替代数据成员引用。
我们现在在完成一个 C++ 风格的日期类上只走了一半的路。下个月我们会把输入输出流、静态成员和运算符重载结合进来讨论。 C++中的引用 C++中的引用是另一个对象的别名。它所引用的对象出现的地方,它本身就可以出现。下面的程序使用引用iref代替i:
你可以把引用看作一个"灵巧"指针,因为它指向另一个对象却又不像指针一样需要明确的寻址和取值:
你必须用引用所指对象来初始化这个引用。这样的声明是没有意义的(除非作为函数的参数):
一旦初始化了一个引用,你不能使这个引用指向另外的对象。既然引用总是需要指向某些东西,你不能像对指针一样给它赋值为NULL。 引用既不需要也不允许&和*操作符的使用,所有的寻址和取值都是自动的。你可以把引用看作一个const指针,每次使用的时候都会取值。 然而,就像指针一样,引用也可以作为函数的返回值。既然引用被定义成一个左值,这就允许一个很特殊的习惯,那就是在完成某任务时,可以将对函数的调用放在=的左手边:
另一种引用的用法是实现引用传递语义,这意味着在被调用函数返回后改变调用进程中存在的函数参数值。你也可以用指针实现,但是引用更明确:
即使你不打算修改函数的参数,为了提高效率用引用来传递大的对象也是一个好办法。例如,假如数据类型X很大,
想要了解引用的更多内容,参见 Dan Saks'''''''' 在 1991 年第九期的专栏: "Reference Types", CUJ Vol.9,No.9。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |