【发布时间】:2012-10-26 13:16:43
【问题描述】:
我认为 C++ 支持以下内容:
Object objects[100];
这将实例化 100 个对象,对吗?是否可以在 Delphi(特别是 2007 年)中做到这一点?除了:
for i:=0 to 99 do
currentObject = TObject.Create;
或使用Allocate 函数,传递的大小值是TObject 大小的一百倍,因为这只是分配内存,它实际上并没有划分内存并将其“分配”给对象。
如果我假设 c++ 实例化是即时的而不是底层迭代,我深表歉意。
【问题讨论】:
-
我认为你不能简单地说“TObject ObjList[100];”并且您已经创建了 100 个 TObject,您只有一个包含 100 个指针的列表,这些指针应该被初始化为 NIL|null 和/或将一个对象分配给列表中的一个项目,所以我认为没有快速的方法。
-
任何这样的语法都可能被撒在迭代实例化之上。您是否有理由需要这样的语法,而不是迭代?
-
您仍然需要为所有对象的实例化付费。无论该实例化是如何触发的。循环消耗的资源是最小的。如果性能有问题且对象相对简单,请考虑改用 Delphi 记录。
-
TObject* data[100];在 c++ 中仅分配指向对象的指针数组。无论如何,您必须像在 Delphi 或任何其他语言中一样使用data[i] = new TObject();语法(或类似的方式)创建对象实例; -
@Vlad:是的,C++确实支持
Object objects[100],前提是Object不是TObject的后代。TObject必须在堆上分配,这是 Delphi 的要求。 C++ 中没有其他任何东西有这个要求。
标签: delphi delphi-2007