zoukankan      html  css  js  c++  java
  • 关于类的方法(不是类方法),类方法指针

    关于类的方法(不是类方法),类方法指针
    关于类的方法:   (不是类方法,这里指object   pascal中的静态方法,相当于C++的成员函数)
        1:   带有隐含参数   self
        2:   方法是方法,数据是数据。
        3:Delphi的方法是一个结构
              type
                  TMethod    record
                      Code:   Pointer;     //方法的入口地址
                      Data:   Pointer;     //类实例指针(Self参数)
                  end;

    我们调用类的方法,其实分为2个部分,
        1:调用方法的代码,通过类来获得方法入口地址。
        2:访问对象的数据(也可能不访问),通过类的方法的那个隐含参数Self来访问。

    我做了一个测试:
        TMyObject    class
        private
            FName:   string;
        public
            procedure   ChangeName(AName:   string);
            procedure   ShowPrivate;
        end;

    procedure   TMyObject.ChangeName(AName:   string);
    begin
        FName   :=   AName;   //修改私有变量
        ShowMessage( 'My   name   is   to   be   changed   to     AName);
    end;

    procedure   TMyObject.ShowPrivate;
    begin
        ShowMessage( 'My   name   is     FName);
    end;

    procedure   TForm1.Button1Click(Sender:   TObject);
    type
        TCallFun    procedure(AName:   string)   of   object;
    var
        E:   TMyObject;
        M:   TMethod;
    begin
         :=   TMyObject.Create;
        M.Code   :=   @TMyObject.ChangeName;   //这里设置要访问的方法的入口地址
        M.Data   :=   @Pointer(E)^;       //设置Self参数,即类实例指针
        TCallFun(M)( 'Xbl ');
        E.ShowPrivate;     //My   name   is   Xbl
        E.Free;
    end;
  • 相关阅读:
    867-转置矩阵
    704-二分查找
    选择排序
    999-车的可用捕获量
    66-加一
    观察者模式(1)
    命令模式(3)-宏命令
    命令模式(2)-命令接口中的撤销方法
    接口测试
    移动端测试
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255116.html
Copyright © 2011-2022 走看看