为什么Visual C ++接口不能包含运算符?

时间:2010-01-08 18:13:23

标签: c++ visual-c++ interface operator-overloading

根据MSDN doc on __interface,Visual C ++接口“不能包含构造函数,析构函数或运算符。”

为什么界面不能包含运算符?返回引用的get方法之间是否存在很大差异:

SomeType& Get(WORD wIndex);

和重载的索引器运算符?

SomeType& operator[](WORD wIndex);

3 个答案:

答案 0 :(得分:8)

__interface修饰符是一个Visual C ++扩展,用于帮助实现COM接口。这允许您指定COM'接口'并强制执行COM接口规则。

因为COM是C兼容的定义,所以你不能拥有运算符,Ctor或Dtors。

答案 1 :(得分:1)

这看起来像.dll。您需要一个方法名称,以便您可以使用其他不支持运算符重载的语言,例如C

答案 2 :(得分:1)

接口不能包含运算符,因为运算符不能是虚函数。基本上接口是其他类派生自的基类。

编辑:在阅读完评论并考虑更多内容之后,我意识到这是多么愚蠢。请原谅我急切的手指。运算符与任何其他函数没有区别。更可能的原因是__interface生成类派生自公共基类,并且dll必须拥有它们在本地使用的所有构造函数,析构函数和赋值运算符。