随笔分类 - Algorithms and Arithmetics
摘要:ADA支持对几乎它自身的所有运算符的重载,虽然ADA的运算符系统不像C/C++那样庞大灵活,ADA提供这种重载某种意义上说是为了达到作为对象操作的一致性要求,这也理应是运算符重载的目的。由于ADA本身的运算符定义特征,所有运算符都是单目或双目的,而ADA将他们均看成函数(function),其参数是输入性(in)对象类型,输出是这种对象类型。以下是一般用来阐释运算符重载的经典方法之一,复数的定义和运算。其实ADA本身也提供了复数的泛型模板,但是这里的小例子强调一些ADA的语言特征。比如ADA本身提供的复数泛型只支持数值类型作为复数分量,而这里采用了任何类型。复数定义文件(complex.ads
阅读全文
摘要:【原题出处】 http://topic.csdn.net/u/20111114/00/7d943d10-9e4f-43c7-95dd-3bc5c18850e7.html【题目原文】小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日。 但张老师告诉他们他的生日是下列10组中的某一天:3月4日3月5日3月8日4日6月6月7日9月1日9月5日12月1日12月2日12月8日张老师把月份告诉了小明,把日子告诉了小强,张老师问他们知道他的生日是那一天吗?小明说:如果我不知道的话,小强肯定也不知道。小强说:本来我也不知道,但是现在我知道了。小明说:哦,那我也知道了。请根据以上对话推
阅读全文
摘要:普通的ADA并不含有垃圾收集等托管程序的特性,除非当ADA的目标运行时建立在Java Virtual Machine或.NET系统上。所以从这个对象内存分配角度,ADA和C++基本上是等价的。ADA提供的语言特性,基本上足以使得ADA能够实现智能指针。当然,是不是有必要在ADA中使用智能指针(考虑ADA常用的思考建模方式),其完善程度(指针的类型,对于OO的支持和对于一般数据的支持)又是另一会儿事。智能指针再智能也不能达到托管程序所能达到内存管理功能(例如简单的引用计数是无法应对孤立环路结构的释放的)。当然,纯粹展现一下ADA的语言特性,这不失为一个好的例子。首先是声明(autoptr.ads
阅读全文

浙公网安备 33010602011771号