(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.3节(常量参数)

4.2.3 常量参数

​ 作为引用参数的替代,您可以使用const参数。由于您无法在例程内为const参数赋予新值,因此编译器可以优化参数传递。编译器可以选择与引用参数相似的方法(或者在C++术语中是const引用),但行为类似于值参数,因为无法通过函数修改原始值。

​ 实际上,如果尝试编译以下代码(在ParamsTest项目中可用,但被注释掉),系统将报出错误:

function DoubleIt(const Value: Integer): Integer;
begin
  Value := Value * 2; // 编译错误
  Result := Value;
end;

​ 您将看到的错误消息可能不太直观,因为它说:

[dcc32 Error] E2064 Left side cannot be assigned to

​ 对于字符串来说常量参数非常常见,因为在这种情况下,编译器可以禁用引用计数机制以获得轻微的优化。这是使用常量参数的最常见原因,这种特性对序数和标量类型来说意义有限。常量参数也不常用于对象,因为在Object Pascal中,当将对象作为常量参数传递时,保持不变的是对象引用,而不是对象本身。换句话说,编译器不允许您将新对象赋值给常量参数,但它允许调用对象的任何可能更改其数据的方法。

注解: 传递常量参数的另一种鲜为人知的方法是为其添加ref属性,如“const [ref]”。这个属性强制编译器通过引用传递常量参数,而默认情况下,编译器将根据参数的大小选择通过值传递还是通过引用传递的方式,结果因目标CPU和平台而异。

你可能感兴趣的:(Object,Pascal,Handbook,学习,笔记,delphi,delphi11,Object,Pascal)