5
A
回答
16
這取決於。如果你想要A<C>
和B
是不同但相關的類型,B
應擴展A<C>
。如果你想讓它們相同,你應該使用typedef
。你能提供更多的上下文嗎?
4
這取決於你想要什麼。如果您使用不同的類來定製模板元編程,那麼最好創建B
。
如果你使用繼承只是爲了減少輸入,而不是一個合適的解決方案,你必須去typedef
,他們是爲此而介紹的。
2
絕對是,如果意圖是給一個現有的數據類型一個新的名字,然後使用typedef。
1
嗯,我假設你正在使用空類來重複輸入A<C>
。在那種情況下,我認爲typedef是一個更好的主意。至少,這似乎是最經常這樣做的方式。
讓我補充一點,這只是我的看法。人們並不完全同意使用typedef。雖然我認爲在這種情況下它是完全可以的。
在閱讀Jon Purdy的回答之後,我想補充一點,如果您需要擴展A而不是其他方式,則應該使用繼承。
1
取決於你想要的,效果是不一樣的。
C++ typedefs不是「強」,這基本上意味着B
和A<C>
將是相同類型。如果你想能夠區分這兩者,請使用一個班級。
strong typedef的各種實現可以在網絡上找到,例如the boost one。
2
這不完全相同。例如用typedef,你可以這樣做:
typedef A<C> B;
func(B param) {...}
...
A<C> var;
func(var);
0
爲了完整性我想再添點:隨着
class B : public A<C> { };
你可以很容易向前聲明B:
class B;
void func(B param);
相關問題
- 1. C++類型定義不清
- 2. C++自定義類型
- 3. C#類型_沒有定義
- 4. 自定義類型在C#
- 5. 按位定義c類型
- 6. C++遞歸類型定義
- 7. C++'class'類型重定義
- 8. C++練習定義類型
- 9. C++定義類型轉換
- 10. C#類變量的定義類型
- 11. 類型轉換爲自定義類 - C++
- 12. C++重複類類型的定義?
- 13. C++使用類定義新類型
- 14. 使用未定義的類型C++,類
- 15. C#/類和自定義類型
- 16. 爲空的類型入門類型定義打破了非可空類型
- 17. 空或空對象類型的XSD定義
- 18. 類型或名稱空間定義或文件結束預期
- 19. 定義類泛型類型
- 20. 定義對可空基本類型的泛型類型限制
- 21. C#錯誤類型或命名空間
- 22. 類型定義
- 23. 定義類型
- 24. 在C#中定義C++類型
- 25. 空泛型類型C#
- 26. 對未定義名稱空間中定義類型的類型推斷
- 27. 省略空自定義類型的JSON
- 28. C#類定義
- 29. C++類定義
- 30. 模板類定義類型
應該提到typedef不能預先聲明。因此,我更喜歡繼承。 – user877329 2017-01-11 17:47:17