Delphi对象和指向对像的指针
来源:互联网 发布:语文讲课软件 编辑:程序博客网 时间:2024/06/15 02:51
http://blog.sina.com.cn/s/blog_4ca032c301000a7m.html
delphi程序片断如下:
aobj1 := TMyClass1.Create(1,2);
aobj2 := TMyClass1.Create(3,4);
aobj1 := aobj2;
P1 := @aobj1;
P2 := @aobj2;
if P1 = P2 then
ShowMessage('Equal');
aobj1.Free;
aobj2.Free;
上面的代码为什么ShowMessage('Equal');从来不执行,同时,最后2句只能有一句,而如果两句都有,就出错?或者,对象变量赋值的本质是什么?
-------------------------------------------------------------------------
-------------------------------------------------------------------------
大哥给你仔细讲讲:
delphi对象变量其实是个指针(4个字节),Create后在堆中创建对象,返回其地址给对象变量
aobj1 := TMyClass1.Create(1,2);
aobj2 := TMyClass1.Create(3,4);
aobj1 := aobj2; //aobj1 也指向了aobj2的对象,在此丢失了对TMyClass1.Create(1,2)的引用,你将不能释放它,有内存问题
P1 := @aobj1; //p1,p2得到的是aobj1,aobj2的地址,而不是对象的地址
P2 := @aobj2;
if P1 = P2 then //因为aobj1,aobj2的地址不相同,所以永远不成立
ShowMessage('Equal');
aobj1.Free; //aobj1 也指向了aobj2的对象,所以你对同一对象释放了两次
aobj2.Free;
DELPHI一般不区分实际的对象与指向对象的指针(即我们所说的对象变量),所以很多人不能理解DELPHI里的对象
0 0
- Delphi对象和指向对像的指针
- 指向对象的指针
- 指向对象的指针
- 指向对象的指针
- 指向对象的指针
- 指向const对象的指针 和 const指针的区别
- 对象数组和指向对象的指针 指向类成员的指针
- 对象数组和指向对象的指针 指向类成员的指针
- 对象数组和指向对象的指针 指向类成员的指针
- 删除指向对象中元素的指针和指向对象指针的顺序
- 指向常对象的指针变量和指向对象的常指针
- 如何区分“指向const对象的指针”和“const指针”?
- 如何区分“指向const对象的指针”和“const指针”?
- 指向const对象的指针和const指针
- 如何区分“指向const对象的指针”和“const指针”?
- 如何区分“指向const对象的指针”和“const指针”?
- 指向const对象的指针和const指针
- “指向const对象的指针” 和 “const指针”
- 练习--hive查询实例和Shell去重
- xxx is not in the sudoers file. This incident will be reported.
- tcp ip协议笔记(2)——链路层
- android developers api guides 文档学习笔记(目录)
- Leetcode Q12 : Integer to Roman
- Delphi对象和指向对像的指针
- Makefile进行宏定义
- c++异常处理机制示例及讲解
- 【HDOJ 5316】Magician
- iOS开发中使用AutoLayout进行不同屏幕尺寸匹配
- OSI七层模型详解
- POJ3041
- 【暑期基础】G HDU 2006 求奇数的乘积
- HDOJ 5329 Question for the Leader