爲什麼當我們繼承一個.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. c#接口,抽象類,強制繼承類不抽象類
- 4. 爲什麼我們不能在C++中爲抽象類創建對象?
- 5. 爲什麼我們需要抽象類而不是虛擬類?
- 6. 爲什麼我們需要Java中的抽象類?
- 7. 爲什麼我的鳥類被看作抽象的?
- 8. 爲什麼我們在java中使用抽象類和抽象方法
- 9. 爲什麼我的派生類是一個抽象類? C++
- 10. 爲什麼我們在上課時需要抽象類?
- 11. 爲什麼我們實現接口抽象類
- 12. 爲什麼我們在抽象類存在時需要接口?
- 13. 爲什麼我們有抽象類時需要接口?
- 14. 爲抽象方法聲明抽象類是否強制?
- 15. 爲什麼我的抽象JSON對象不被解析?
- 16. 我們什麼時候去Java中的接口或抽象類?
- 17. ASP.NET System.Web.Abstractions爲什麼將它們創建爲抽象Base類?
- 18. 強制子類實現抽象子類
- 19. 爲什麼HttpServlet類被聲明爲抽象?
- 20. 爲什麼HttpServletRequestWrapper類不是抽象的
- 21. 爲什麼編譯器認爲這個類是抽象的(C++)?
- 22. 什麼是算法中的抽象數據類型,爲什麼我們需要它們?
- 23. 將每個派生類強制爲Singleton的抽象基類
- 24. 爲什麼在我們的項目中需要接口層/抽象類?
- 25. C++中的抽象類機制有什麼特別之處?
- 26. 爲什麼使用抽象如果我們有接口
- 27. 爲什麼我們要使用抽象類或方法,爲什麼不重寫超類方法呢?
- 28. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 29. 爲什麼抽象類和接口不能被實例化?
- 30. 爲什麼抽象類不能被密封或靜態?
正確的,但您的術語稍微偏離:你必須非純粹落實基本所有的純方法。有可能實施一種純粹的方法;這是純粹的dtors的實現中最常見的。 – 2011-01-12 19:55:42