0

嗨,我正在阅读 Don Box 的书“Essential COM”。我的问题是关于 IUnknown 中的 QueryInterface 方法。虽然我知道类型转换的实现被移动到接口以屏蔽客户端类型转换代码,但我不明白这是为什么。这本书在第一章中说,RTTI 的实现因编译器而异,因此在 IUnknown 中有 QueryInterface 方法的动机。但是,在客户端进行强制转换有什么问题。我的意思是只要求实现是跨供应商、跨编译器和跨平台的,客户端代码不必有任何这些约束,因此也可以在客户端进行转换。对此的任何见解将不胜感激。

谢谢, 阿卜杜勒

4

1 回答 1

0

存在多重继承的情况下的强制转换需要了解实现,因此它不能纯粹是客户端。(所需要的几乎是动态演员表。)

现有机制还允许使用强制转换不会的有用实现技术——例如,QueryInterface 的结果可以是一个完全独立的对象,可能是动态创建的。

于 2012-07-22T22:16:04.940 回答