zoukankan      html  css  js  c++  java
  • Delphi编译器属性(特别修饰符Ref,Unsafe,Volatile,Weak)

    1 Ref
    delphi中常量参数就像一个本地常量,或者说只读变量。常量参数与值参数类似,除了不能在过程或函数体内给常量参数赋值,并且不能将常量参数传给另一个var类型参数。(但是,如果你常量参数传递的是一个对象引用,你还是可以修改这个对象的属性的)

    使用const使得编译器能够为结构体和字符串类型的参数优化代码。而且它也提供了一种保护,防止无意中传递了一个参数引用到其他过程。

    常量参数可能以值方式或引用方式传递到函数,这依赖于使用的编译器。如果要强制编译器使用引用方式传递常量参数,你可以对const关键字使用 [Ref] 修饰符。该修饰符即可以在const前面,也可以在const后面。

    例如:

    function FunctionName(const [Ref] parameter1: Record1Name; [Ref] const parameter2: Class2Name);
    2 Unsafe
    用来标记返回值Result以使编译器对它停用自动引用计数(ARC)。

    [Result: Unsafe] function ReturnUnsafe: TObject;
    除了System单元外,在非常罕见的情况下也可以用来修饰参数或成员变量。但是不推荐这样使用,因为它没有产生引用计数相关代码,是危险的。

    3 Volatile
    用来标记变量、参数、字段成员可能被另一个线程修改,所以不对它产生寄存器或临时内存位置的副本优化。

    type
    TMyClass = class
    private
    [volatile] FMyVariable: TMyType;
    end;
    4 Weak
    声明弱引用。

    type
    TComponent = class(TPersistent, IInterface,
    IInterfaceComponentReference)
    private
    [Weak] FOwner: TComponent;
    ---------------------
    作者:tht2009
    来源:CSDN
    原文:https://blog.csdn.net/tht2009/article/details/50465324
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    macOS 修改键盘重复按键延迟
    stdout 与 stderr 区别
    E. 1-Trees and Queries
    Codeforces Round #615 (Div. 3)
    Codeforces Round 613(div 2)
    Codeforces Edu80
    SPOJ
    快读
    《货车运输》题解--最大生成树&倍增
    倍增思想求lca
  • 原文地址:https://www.cnblogs.com/findumars/p/11128250.html
Copyright © 2011-2022 走看看