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




