|
|
发表于 2008-3-17 01:37:00
|
显示全部楼层
Re:C++和JAVA谁好谁坏
java里面没有指针漂移的问题,或者说,编译器为你处理了这些,
toString获得的Address,永远是实际对象的Address,而不是某个接口的Address.
在COM中需要用QueryInterface(IID_IUnknown)。
不过本人目前在C++中用的是:
class IDynamic // 除了CEvent,CStr,包装器,所有类和接口必须继承IDynamic
{
public:
virtual void *GetAddr()const=0;
virtual CStr GetClass()const=0;
};
此外我使用virtual继承,而COM就惨了,他有多个IUnknown接口,需要统一返回值。
------------------------------------------------
实际上还有更加BT的方法:
1 除了 IMyDispatch,不允许用任何接口,虚函数
2 几乎所有类必须virtual继承 IMyDispatch
3 不允许多继承
4 不允许共有成员变量
5 方法调用,一律通过 IMyDispatch::MyInvoke()。
虽然速度慢,但是可以帮你从复杂的继承关系中超脱出来,
也不会有指针漂移。 |
|