Managed C ++中的接口看起来有点奇怪,因为它们允许使用静态方法和成员。例如,以下是有效的MC ++接口。
interface class statinterface
{
static int j;
void Method1();
void Method2();
static void Method3()
{
Console::WriteLine("Inside Method 3");
}
static statinterface()
{
j = 4;
}
};
好吧,我的问题是界面中静态方法的用途是什么。虚拟表等发生了什么。实现此接口的类的虚拟表是什么。我想到了很多问题。这种类,即接口类不等同于普通的抽象类,因为我们在这里不能定义非静态方法。
我只想知道在界面中允许静态的智慧。这肯定是违反OOP原则的IMO。
答案 0 :(得分:3)
回答这个问题的最简单方法是使用.NET Reflector检查从代码生成的程序集。
VTable只包含虚函数,因此不会包含静态函数。
这种语言称为C ++ / CLI,而不是Managed C ++(2002年以来这种情况很糟糕)。
这与OOP原则无关,OOP原则最初从未包含纯接口的概念。