首页| 论坛| 消息
主题:Free Pascal 和 Turbo Pascal 的主要区别
回帖:

找不到pascal的资料,只有C#的。是微软写的……下面的规则概括了运算符重载指南:

在作为逻辑内置语言类型的值类型(如 System.Decimal 结构)上定义运算符。

仅在定义方法的类中提供运算符重载方法。C# 编译器强制使用该指南。

使用公共语言规范 (CLS) 中描述的名称和签名约定。C# 编译器自动实现此功能。

当运算结果将十分明显时使用运算符重载。例如,能够从一个 Time 值减去另一个 Time 值以得到 TimeSpan 是有意义的;而用 or 运算符创建两个数据库查询的联合,或者用 shift 向流写入则是不适当的。

以对称方式重载运算符。例如,如果重载相等运算符 (==),则还应该重载不相等运算符 (!=)。

提供替换签名。大多数语言不支持运算符重载。因此,对于所有重载运算符的类型,CLS 都要求包含一个辅助方法(具有相应的特定于域的名称)来提供等价的功能。提供这种辅助方法是公共语言规范 (CLS) 的要求。下面的示例符合 CLS。

public struct DateTime

{

public static TimeSpan operator -(DateTime t1, DateTime t2) { }

public static TimeSpan Subtract(DateTime t1, DateTime t2) { }

}

下表包含运算符符号列表以及相应的替换方法和运算符名称。



C++ 运算符符号

替换方法名称

运算符名称

未定义

ToXxx 或 FromXxx

op_Implicit

未定义

ToXxx 或 FromXxx

op_Explicit

+(二进制)

Add

op_Addition

-(二进制)

Subtract

op_Subtraction

*(二进制)

Multiply

op_Multiply

/

Divide

op_Division

%

Mod

op_Modulus

^

Xor

op_ExclusiveOr
下一页 (1/2)
下一楼›:8错,但现在的新手都没用过TP了,实用性稍稍降低
‹上一楼:Free Pascal容许运算符重载。比如,可以自己为矩阵运算定义一个“+ ..

--> 查看全部回帖(31)
«返回主帖