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;
  • 相关阅读:
    国内各地图API坐标系统比较与转换
    ubuntu下安装程序的三种方法
    使用微信公众平台测试账号开发“网页授权获取用户基本信息”功能
    centos中crontab(计时器)用法详解
    vb随机移动鼠标
    js中对函数设置默认参数值的3种方法
    Ubuntu 16.04安装配置VSFTPD(支持TLS/SSL加密)
    Spark scheduler
    Spark shuffle
    Spark存储体系
  • 原文地址:https://www.cnblogs.com/liujicai/p/4369453.html
Copyright © 2011-2022 走看看