为什么当我们继承一个.dll中定义的抽象C#类时,我们的C ++-CLI类被强制抽象?
有没有办法让它不抽象我们的c ++ - CLI类?
答案 0 :(得分:3)
我不确定我是否正确理解了你的问题,但你必须实现所有已声明但未在抽象基类中实现的方法,否则你的类自然会被认为是抽象的。
答案 1 :(得分:2)
如果你的类声明任何“纯虚拟”方法(即“= 0”),或者继承任何纯虚方法而不覆盖它们,那么你的类将是抽象的。
答案 2 :(得分:2)
class A
{
public:
virtual void fun() = 0; //"pure" virtual function
virtual void gun() = 0; //"pure" virtual function
virtual void sun() //virtual function - "not pure"
{
/***** implementation code *****/
}
};
这里A
是一个抽象类,因为它有两个纯虚函数。
class B : public A
{
public:
virtual void fun()
{
/******* implementation code ********/
}
};
问题:什么是B
?这是非抽象的吗?毕竟,它定义/实现了一个名为fun()
的纯虚拟函数?
答案:号码B
也是一个抽象类,因为它没有定义/实现gun()
,它也是纯虚拟基类A
中的函数。仅定义一个名为fun()
的纯虚拟函数并不会使其成为非抽象的。它必须定义所有纯虚拟函数。 ALL表示ALL,与纯虚函数一样多。
这里有两个重要的注释: 1)纯虚函数,2)定义所有这些。只有这样一个类才能成为具体/非抽象的!