为什么当我们继承一个.dll中定义的抽象C#类时,我们的C++ - CLI类是强制抽象的?
有什么办法可以让它不能抽象我们的C++ - CLI类吗?为什么我们的C++类被强制抽象?
2
A
回答
3
我不知道我理解正确你的问题,但你必须执行已宣告但尚未在抽象基类实现的所有方法,否则自然类被认为是抽象的为好。
2
如果您的类声明了任何“纯虚拟”方法(即“= 0”),或者继承了任何纯虚方法而不覆盖它们,那么您的类将是抽象的。
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)定义了所有的人。只有一个类可以成为具体/非抽象的!
相关问题
- 1. 为什么我们不能在C++中为抽象类创建对象?
- 2. 为什么我们需要抽象类而不是虚拟类?
- 3. 为什么我的鸟类被看作抽象的?
- 4. 为什么我们在java中使用抽象类和抽象方法
- 5. 为什么我的派生类是一个抽象类? C++
- 6. 为什么我们有抽象类时需要接口?
- 7. 为什么我们实现接口抽象类
- 8. 为抽象方法声明抽象类是否强制?
- 9. 为什么我的抽象JSON对象不被解析?
- 10. ASP.NET System.Web.Abstractions为什么将它们创建为抽象Base类?
- 11. 强制子类实现抽象子类
- 12. 为什么编译器认为这个类是抽象的(C++)?
- 13. 将每个派生类强制为Singleton的抽象基类
- 14. 什么是算法中的抽象数据类型,为什么我们需要它们?
- 15. 为什么在我们的项目中需要接口层/抽象类?
- 16. C++中的抽象类机制有什么特别之处?
- 17. 为什么使用抽象如果我们有接口
- 18. 为什么我们要使用抽象类或方法,为什么不重写超类方法呢?
- 19. 为什么你需要知道抽象类的抽象方法是否抽象
- 20. 为什么https在本地被强制?
- 21. 为什么我对象被
- 22. 为什么需要抽象类?
- 23. 这是为什么抽象类在PHP
- 24. 为什么使用抽象类
- 25. 为什么我们不能在WCF中使用抽象类而不是接口?
- 26. 什么是抽象类型?
- 27. ASP.NET MVC3,为什么我们需要强类型的View?
- 28. VTABLE为抽象类C++
- 29. 抽象属性不强制
- 30. 抽象类Java为什么我的程序只打印0.00?
正确的,但您的术语稍微偏离:你必须非纯粹落实基本所有的纯方法。有可能实施一种纯粹的方法;这是纯粹的dtors的实现中最常见的。 – 2011-01-12 19:55:42