新人问题, 关于接口继承
本人新人,对接口继承有点疑惑,对于如下两种写法,在实现上有什么不同吗?
////////////////// 写法1
interface IMyInterface : IUnknown
{
...
}
interface IMyInterfaceEx : IUnknown // 版本扩展功能接口
CMyInterface : public IMyInterface,
public IMyInterfaceEx
{
...
}
////////////////// 写法2
interface IMyInterface : IUnknown
{
...
}
interface IMyInterfaceEx: IMyInterface // 版本扩展功能接口,直接从原接口中继承
{
...
}
CMyInterface : public IMyInterfaceEx
{
...
}
这两种写法编译都能通过,且功能正常,但没有区别吗?谢谢
[解决办法]
当然有区别了。
1、两种情况下的CMyInterface类大小不一样,vftb也不一样
2、需要增加接口的情况下,使用第一种方式跟容易扩展
[解决办法]
具体情况要具体分析,如果你增加的是一个新的,与原来的接口完全无关的接口,那么就独立成一个新的接口更好;如果你这个新增部分与原来的接口逻辑上是一个模块的,是原有部分的一个补充,那么就继承原来接口比较好。
从原有接口继承,这样老的接口是不变的,使用原来版本的接口的程序仍然不会受到影响。这方面的关系,可以看看Essential COM