C类参考文献

来自Delphi,我习惯使用这样的类引用(元类):

type
  TClass = class of TForm;
var
  x: TClass;
  f: TForm;
begin
  x := TForm;
  f := x.Create();
  f.ShowModal();
  f.Free;
end;

实际上,从TObject派生的每个类都有一个名为ClassType的方法,它返回一个可用于创建X实例的TClass.

在C中有类似的东西吗?

最佳答案
显然,现代Delphi支持元类与原始Smalltalk大致相同.

在C中没有类似的东西.

在C中模拟该特性的一个主要问题是,具有表示类型的值的运行时动态分配,并且能够从这些值创建实例,在C中,必须静态地知道类型的构造函数以便实例化.

也许你可以通过使用C静态多态来实现大部分相同的高级目标,包括函数重载和模板机制,而不是使用元类的极端运行时多态.

但是,使用C模拟效果的一种方法是使用可克隆的示例对象,和/或几乎相同的想法,多态对象工厂对象.前者非常不寻常,后者可以偶尔遇到(主要是差异在于参数化发生的地方:examplar-object是对象的状态,而对象工厂则是创建函数的参数).我个人会远离那个,因为C是为静态打字而设计的,这个想法是关于哄骗C模仿一种具有不同特征和编程风格的语言等.

转载注明原文:C类参考文献 - 代码日志