【发布时间】:2017-07-10 11:18:17
【问题描述】:
我阅读this 的文章是因为我想了解class of [ClassName] 的用处,并且我看到他们声明了一个虚拟构造函数。所以我做了一个测试,你可以在这里看到:
我(从那篇文章中)了解到,当我在编译时不知道要构造的类并且我可以使用 class of 时,虚拟构造函数很有用。在我上面显示的代码中,有什么区别?
如果我将 TFirst 构造函数声明为虚拟而不覆盖 TSecond,我当然会收到警告,我可以通过重新引入或覆盖来删除它。但是构造函数不是被自动覆盖了吗(看左边的代码)?我认为他们是等价的。
【问题讨论】:
-
请不要对代码使用屏幕截图!您可以粘贴语法突出显示的代码 - 使用
{}按钮或查看 here。 -
它们不等价。如果您尝试通过类引用创建实例,您会发现差异。我很确定文档涵盖了这一点。是吗?
-
@RaffaeleRossi 正如大卫指出的那样,它在文档中。要直接回答两个代码是否相等的问题,请参阅:“通过类类型标识符调用时,声明为虚拟的构造函数等效于静态构造函数。但是,当与类引用类型结合使用时,虚拟构造函数允许对象的多态构造"