C 為什麼不支援某些東西

2021-09-07 21:37:08 字數 476 閱讀 9411

1、學習c++的過程,經常發現c++不支援一些東西,思考下,為什麼?

2、c++不支援一些東西,有兩個原因:

a、可以做到,但是會導致一些不合理的結果,這些結果往往與程式設計師的期望不一致。

b、屬於「臣妾做不到啊」

3、對於第一種情況,比如:

a、傳引用,存在隱式型別轉換,會建立乙個臨時物件。對引用的修改,不能體現在原物件身上,與程式設計師期望不一致,c++不支援。

b、p++++,編譯器不支援。

4、對於第二種情況,比如:

c++不支援模版的分離式編譯。

5、c++能做什麼,不能做什麼,往往是由c++編譯器決定的。c++做不到,往往是因為編譯器做不到。比如:

a、比如,不能這樣建立物件person p(),本意是想表達建立p,呼叫預設構造方法。但是做不到,因為編譯器會把他理解為方法宣告。返回型別為person,方法名為p,沒有形參表。

b、巢狀從屬型別,必須使用typename

為什麼模板不支援分離編譯?

在c 中,為了乙個專案的規範化我們通常把 歸類為三類 宣告檔案 實現檔案 測試檔案。比如,我們要實現乙個順序表,那麼規範化就是建立3個檔案 seqlist.h 順序表相關宣告 seqlist.cpp 順序表相關實現 test.cpp 順序表測試檔案 那麼普通順序表這樣寫一點問題都沒有,用模板實現成這...

為什麼模板不支援分離編譯

在c 中,為了乙個專案的規範,我們通常把 歸為三類 宣告檔案 實現檔案 測試檔案.比如,我要用c 實現乙個鍊錶,那麼就會建立這3個檔案 linklist.h 鍊錶的相關宣告 linklist.cpp 鍊錶的實現 test.cpp 鍊錶測試 本文忽略 那麼問題來了,普通鍊錶這樣寫起來一點問題都沒有 如...

為什麼模板不支援分離編譯

在c 中,為了乙個專案的規範,我們為您通常把 歸為三類 1 宣告檔案 2 實現檔案 3 測試檔案 比如我們要用c 實現乙個鍊錶,那麼我們就會建立這3個檔案 linklist.h 鍊錶的相關宣告 lisklist.cpp 鍊錶的實現 test.cpp 鍊錶測試 如果一旦,我們要通過類模板來實現鍊錶 仍...