回答
這是從'C'語言的宿醉。
在C,如果你有
struct Pt { int x; int y; };
然後宣佈這個結構的變量,你需要做的
struct Pt p;
的類型定義有助於你避免在C
typedef struct { int x; int y; } Pt;
現在你可以做
Pt p;
在C.
在C++中,這是因爲
class Pt { int x; int y; };
允許你做
Pt p;
它提供了C中沒有記法的好處++因爲它在C.確實是從來沒有必要OTOH,它會導致限制,因爲這種語法不提供任何構建或破壞的機制。
即,您不能在構造函數或析構函數中使用名稱typedef名稱。
typedef class { int x; int y; } Pt;
你不能有一個叫Pt的構造函數,也不能有析構函數。 因此,在大多數情況下,你不應該在C++中這樣做。
謝謝!關於C的益處呢? Steve Jessop描述的那個? – octoback 2013-03-19 14:08:52
你當然可以從'Pt' – 2013-03-19 14:17:31
它仍然繼承說:「沒有提供任何的繼承機制」 – 2013-03-19 14:38:42
此答案假定課堂中有一些有趣的內容,而不僅僅是{}
。
在C++中,可以使用與類相同名稱的函數(爲了與C兼容),但幾乎不想。
你不能有一個與typedef同名的函數,所以這樣做可以保護你免受不守規矩的名稱選擇。幾乎沒有人打擾,即使你去打擾你可能會寫:
class Name {};
typedef Name Name; // reserve the name
如果你指的是真正的代碼是寫(我不能按照看見它你鏈接),那麼它就像class Name {};
(這是一個特殊的東西要寫,爲什麼你會稱空類Name
?),但修改爲上述考慮。
- 1. 類中的C++ typedef
- 2. C++,使用lambda實現typedef?
- 3. ANSI C - 使用的typedef
- 4. 模板類的typedef - 使用
- 5. 的typedef用C
- 6. C++的typedef要求::類型
- 7. typedef模板類與Doxygen(C++)
- 8. C++的typedef和子類
- 9. 使用CRTP和typedef的「繼承」類型
- 10. 中的typedef類
- 11. 使用的typedef類名< >
- 12. 使用帶模板類的typedef
- 13. C++:使用typedef使代碼更靈活
- 14. C++:X沒有指定類型,同時使用的typedef
- 15. C++避免使用typedef進行類型轉換警告
- 16. 如何在模板類中使用C++模板typedef
- 17. C++的語法:使用的typedef類型轉換
- 18. 如何在C++中爲泛型類使用typedef
- 19. 表示使用UML在C++模板類中定義的typedef
- 20. C++使用的typedef非內聯函數
- 21. 使用sed轉換C結構和typedef
- 22. 使用SWIG在Python中訪問C++ typedef
- 23. 問題在C++中使用的typedef
- 24. Typedef結構在c中的使用
- 25. C++ typedef和返回類型:如何讓編譯器識別使用typedef創建的返回類型?
- 26. 如何使用此類型的typedef?
- 27. 使用派生類'typedef的基地
- 28. C typedef衝突
- 29. C++ typedef聲明
- 30. template typedef C++ 0x
遺產從C.不要使用。 – 2013-03-19 14:05:50
我個人認爲這個問題值得downvotes。我也反對使用這個建議,但這是一個公平的問題。也許解釋**爲什麼**會在這裏做得更好。 – 2013-03-19 14:07:48
@IvayloStrandjev - 同意了,我只是寫同樣的。這真是醜陋而不必要的,我有點驚訝,它在IBM的文檔中使用。 – 2013-03-19 14:11:03