CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  非技术区

delphi的问题和弱点?!

楼主functionreal(funcreal)2003-12-02 21:49:57 在 Delphi / 非技术区 提问

这是我学习delphi的第三天,有几个问题向大家请教:  
   
  1。delphi中有垃圾收集机制吗?如果有,请给一个感性认识。  
  2。父类和子类同名的函数是不是被覆盖了?既父类中所有的该名字的函数均失效。我的测试结果为是。  
  3。重载和覆盖的函数为什么有的时候要写overload或override,有时候好像又不需要。请给一个感性认识。  
  4。delphi中有类方法,但是有没有类变量呢?  
  5。delphi中有多重继承概念吗?它是单根继承,我觉得应该没有。所以delphi中是否有接口的概念?  
   
  我觉得以下是delphi的几个弱点,请大家指导一下,如果我说的不对,一定要骂骂骂骂我:  
  1。变量只能在程序块的开头定义。  
        不知是否为了兼容pascal.   delphi为什么一定要把变量定义到开头呢?在工程的开头我怎么会知道需要什么样的变量?这会转移我的思路。还要不断的回过头去修改。大大降低程序的可读性。这同时也导致了第二个弱点。  
  2。对象的定义和初始化相分离。  
      无可否认,变量的定义和初始化的同时进行是大势所趋,这样可以避免使用未初始化的对象,大幅度减少编程错误。可是delphi要求变量在开头定义,那么,某些对象的初始化信息必然还不存在,所以这时初始化对象犹如空中楼阁。当然,如果编译器会指出你使用了未出世化的变量似乎可以减少遗憾,但实际好象并非如此。所以你就必须记住Create,   Destroy,并为忘记他们而付出代价。  
  3。具有全局变量。  
          这也没什么说的。c++同样抱着这样的遗憾。  
  4。procedure和function  
          我实在不明白为什么有了function还要有procedure。或许再写几天程序我会体会到他们共存的好处,但到现在他们一直在给我添麻烦。  
  5。如果只有类方法却没有类变量  
          那么,类方法中是否只能使用全局变量?如果是的话岂不是任何人都可以修改这一全局变量?这个我实在是不了解,请高手指示一下。  
   
  还有4天可能就要投入开发了。希望高手把我的错误说详细一点。  
  问题点数:0、回复次数:5Top

1 楼Gide(一针见血说实话)回复于 2003-12-03 09:37:45 得分 0

1。变量只能在程序块的开头定义。???  
  4。procedure和function       ???Top

2 楼Shiyl(云淡风清 卷舒自在)回复于 2003-12-03 10:01:31 得分 0

问题:  
  1、?不会  
  2、看你怎么定义子类了,如果用了OVERRIDE,那么自然父类的同名函数不能用了。  
  3、重载和覆盖是两回事,覆盖是多态的部分,重载只是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。重载是静态的(即早绑定),覆盖是动态的(即晚绑定)。引用一句Bruce   Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。”  
  4、?研究中  
  5、?研究中  
  弱点:  
  1、变量完全可以定义在PROCEDURE或FUNCTION里,如果定义成全局变量可以写在PUBLIC里。  
  2、因此没有这个问题。  
  3、全局变量不好吗?你想完全封装?  
  4、FUNCTION返回值,PROCEDURE不返回值。DELPHI里就是这么定义的,有什么问题吗?  
  5、??Top

3 楼functionreal(funcreal)回复于 2003-12-03 10:18:59 得分 0

感谢楼上回复。但是:  
  问题:  
  3。我是问,后面写的overload,和override一定要写上吗?岂不是多余的?  
  弱点:  
  1。我的意思你可能不明白:  
      例如:delphi中可以写出类似下面的语句吗?  
      ...  
      for(int   i=0;   i<10;   i++){...}     //变量在过程中定义  
      ...  
   
  2。所以如果不能,这个问题仍然严重地存在。  
  4。如果function和procedure只是有无返回值的区别,那么procedure又存在的必要吗?另外,procedure和function可以相互重载或覆盖吗?Top

4 楼dbk(含笑)回复于 2003-12-13 13:21:28 得分 0

我是新手  
  我也想知道!  
  我来学习Top

5 楼getit911(Windows转Linux中)回复于 2003-12-13 14:04:01 得分 0

获取资源并释放资源是程序员的责任,楼主一定是搞JAVA  
  把变量统一放到var段能方便排错和优化,比把变量定义混到程序中清晰多了。  
  overload一定要写的,  
   
  Top

相关问题

  • VB做的控件在Delphi中不能使用,是VB的弱点还是Delphi的缺陷?欢迎有此经历者来此讨论。
  • delphi和oracal?
  • bcb 和delphi
  • vc和delphi
  • Delphi?
  • Delphi?
  • DELPHI 7 和 DELPHI .NET 一样吗?
  • Delphi和Word急救
  • 关于java和delphi
  • delphi和odbc问题

关键词

  • 函数
  • delphi
  • 变量
  • 定义
  • 弱点
  • 初始化
  • 全局
  • 开头
  • 重载
  • 覆盖

得分解答快速导航

  • 帖主:functionreal

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo