zoukankan      html  css  js  c++  java
  • delphi对象赋值

     Delphi的对象之间赋值主要要注意几个方面的问题:
      1.对象之间的 :=赋值只是地址赋值,即是将当前对象的地址赋值到变量中,定义的变量可以是不用初始化的,在内存中两个变量指向的是同一地址空间;
      2.对象值赋值,主要是在内存中再开避新的地址空间,在赋值时是赋值相同 的内存副本,一般如采用TPersistent继承的类都有Assign方法,可以重载此方法,它的主要作用即是对于对象中的变量进行相应的赋值操作。继承的对象如没有重载此方法在应用此方法时会提示不能对相同类的对象进行此赋值操作的错误!
     
     示例:
       type
       TTest = class(TPersistent)
         FName :string;
       public
         procedure Assign(source: TPersistent);
         property Name :string read FName write FName;
       end;
     
      procedure TTest.Assign(source: TPersistent);
      begin
        if (source is  TTest) then
        begin
          Name := TTest(source).Name;
        end;
      end;
     
    现定义两个对象 Test1,Test2 :TTest;
       Test1 := Test2;//--------指针操作,Test1指向Test2所指向的地址空间,Test1可以不用创建;但Test2中所做的修改或操作会影响到Test1,因为它们使用的是相同的地址空间
      Test1.Assign(Test2) //-----会在内存中新建一片地址空间给Test1,Test2的操作不会影响到Test1的内容及修改,但Test1必须先创建,即:Test1 := TTest.Create;
  • 相关阅读:
    POJ-1035 Spell checker---字符串处理
    hdu-3572 Task Schedule---最大流判断满流+dinic算法
    BZOJ4826: [Hnoi2017]影魔
    BZOJ4825: [Hnoi2017]单旋
    BZOJ3504: [Cqoi2014]危桥
    BZOJ4407: 于神之怒加强版
    BZOJ2818: Gcd
    BZOJ4542: [Hnoi2016]大数
    BZOJ4540: [Hnoi2016]序列
    BZOJ4537: [Hnoi2016]最小公倍数
  • 原文地址:https://www.cnblogs.com/liujicai/p/4369453.html
Copyright © 2011-2022 走看看