C++/CLI:如何在C++/CLI中声明抽象(在C#中)类和方法?

11

以下C#代码在C++/CLI中的等价代码是什么?

public abstract class SomeClass
{
    public abstract String SomeMethod();
}
2个回答

22

稍微调整一下关键词的顺序,就能得出正确的语法。在C#中,abstract放在前面,但在C++/CLI中放在后面。与override关键字相同,C++11兼容编译器今天也已经支持将其放在函数声明的末尾。就像传统C++中使用= 0标记一个函数为抽象一样:

public ref class SomeClass abstract {
public:
  virtual String^ SomeMethod() abstract;
};

4
"声明'SomeMethod() = 0'和声明'SomeMethod() abstract'有什么区别吗?" - Lopper
2
No. = 0 是 C++ 的语法,但 C++/CLI 也支持它。 - Hans Passant

7

You use abstract:

public ref class SomeClass abstract
{
    public:
        virtual System::String^ SomeMethod() = 0;
}

声明“SomeMethod() = 0”和“SomeMethod() abstract”有什么区别吗? - Lopper
不是这样的。Method() = 0 是定义抽象类的非 C++/CLI (仅标准 C++) 的方式。 使用 C++/CLI,您可以使用它,也可以使用新的 abstract 关键字。 我更喜欢使用原始方法,因为这只是一种习惯,而在方法的情况下,abstract 关键字是上下文相关的,但两者都可以。 请参见:http://msdn.microsoft.com/en-us/library/b0z6b513(VS.80).aspx - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接