关于TCollection / TMetaClass的问题,非常奇怪,请高人指点,多谢!
TCollection
|
A
TCollectionItem
|
B
=======================================================================
__fastcall A::A(TComponent* Owner) : TCollection(__classid(B))
{
}
B* A::Add(void)
{
return (B*)(inherited::Add());
}
=======================================================================
__fastcall B::B(A *Owner) : TCollectionItem(Owner)
{
......
}
=======================================================================
现在发现一个奇怪的现象:
A *a;
B *b;
.....
b = a->Add();
虽然新增加了一个item,但B的构造函数似乎没有执行
TCollection的构造函数__fastcall TCollection(TMetaClass* ItemClass);
其参数TMetaClass*,我用__classid(B)应该是正确的吧?
为什么a->add()新开辟了B的内存空间,可是却没有调用B的构造函数呢?
真的很奇怪,请高人指点