回覆列表
  • 1 # lobby_he

    不知道為什麼這麼複雜,但我略懂C++,這個語言的確有非常多的牛逼奇葩語法。

    一,運算子過載,+-*/%都能過載,不僅如此,像取地址符號&,指標指向符號->,取成員變數符號「.」等,都可以過載,正是因為這個,C++裡面可以搞出智慧指標的玩意兒!

    二,各種名字隱藏規則,子類中名字覆蓋基類中名字等。

    三,函式分虛擬函式,非虛擬函式。

    四,自動型別轉換規則,整型自動提升為浮點,透過建構函式可以把buildin型別悄悄轉為類例項等,

    五,泛型,模板,特化,偏特化。以及編譯階段到底是用某個特化版本還是某個偏特化版本,還是使用最基礎版本的選擇策略都是很複雜的。

    六,超程式設計。傳說中的編譯期程式設計!

    七,記憶體必須由碼農自己管理,現在能管理好的,不多啦!

    八,暫時沒想起來!

  • 2 # 老蓋聊技術

    我是一名C++程式設計師,已經工作了十幾年,我來回答這個問題吧。

    在工作這麼多年,我用過很多種語言,所有的高階語言基本來說都不難,語言只是一個工具,當你掌握語言之後,你還要學會大量的庫,然後不管你在哪個平臺開發,就都需要學習相關的介面,那些是比較耗時間的,語言只是一個基本的工具。

    C++相對是比較底層一點,基礎一點,被封裝的沒有那麼多,所以說它可開發的內容也很多,相對其他的高階語言被封裝了很多,去除了一些比較難的地方,比如指標,記憶體管理等。

    當C++用熟練之後,這些都不是問題,然後再去學習其他語言的時候,再用其他語言操作的話,會感覺更加的輕鬆,學程式設計系統一些底層的知識必須要會,這是程式設計師必經的一個路。C++在記憶體管理和指標方面稍微難了一點,如果能學精通,對以後的程式設計有很好的幫助。

  • 3 # 鍾式看世界

    《Effective C++》第一條就明確指出學習C++ 要把它看成四種語言的聯盟(原文是federation),也就是1) 相容的C 2) 面向物件的C++ 3) 模板程式設計,即超程式設計 4) 標準模板庫 (STL) 你如果把學習C++當作學習四種語言,你就會少很多困惑,對C++各種不一致的語法設計容忍性也高了。我覺得C的標準更新更偏向於保守,堅守自己的特長,更加符合其定位。C++的定位似乎就是萬能語言,但是真的不是那麼人類友好。

    現在C++作為一箇中層語言,很多時候是因為歷史慣性,繼續使用C++,並不是不可取代的。

    我覺得只要有一個語言能夠跨平臺,高效且相對人類友好,能與C二進位制介面相容,慢慢取代C++的中層語言地位不是不可能。

    望採納。

  • 4 # EmacserVimer

    C++他爹Bjarne Stroustrup都曾開玩笑說自己已經搞不懂C++了,他也曾多次表達過C++似乎已經有點太龐大了。其實也不是說C++語法多麼複雜,而是C++本身複雜,C++既想把C的事情幹了,又想摻和摻和Java的事情,這語言能不復雜嗎?

    C++是在特定時期為了解決眾多複雜場景而誕生的一門程式語言,為了符合時代不得不做妥協,又為了適應未來引入了很多新的理念,最終C++才會這麼複雜。今天就著重帶大家分析一下C++這門程式語言,到底為什麼這麼難學。

    C++支援多種正規化、這是C++難學的根本

    大約是41載之前,一位剛剛拿到博士學位的研究員,為了更好的適應當時的需求,考慮到C語言不支援面向物件程式設計等多種問題,這位研究員就在C語言的基礎上設計了一門新的程式語言,他把這門程式語言命名為C with classes,幾年之後正式自立門戶改成了C++這個更加好聽的名字。

    C++支援多種程式設計正規化,面向過程、面向物件、泛型程式設計,事實上為泛型設計的模板早就證明C++是圖靈完備的,C++也支援了模版超程式設計正規化。C++繼承了C語言,又支援了面向物件等程式設計理念。能夠做低階語言能做的硬體程式設計、系統程式設計,同時又具備高階語言的特點,作為應用開發語言。

    C++的GC一言難盡、C++型別極其複雜

    C++當然可以實現GC,但是說實話真的是太難受了,學過C++的也都知道,我不能用一門程式語言的時候,自己瘋狂去造輪子吧,這也就太難受了一點。我記得好多年前我看到一個帖子,就是說這個問題的,有的人說C和C++沒有GC的問題,還說什麼作業系統GC憑什麼不是GC?有的人評論得就很貼切,作業系統那叫收屍,事實上就是這麼殘忍。

    C++的型別複雜很多也確實是歷史遺留問題,比如C++的型別全都是值型別。C++17的標準都來了,可以說是最不安分的程式語言之一了。程式語言界Python2和Python3本質上可以算是兩門完全不同的程式語言,這屬於變動比較大的了,不過值得慶幸地是,現在有個比C++更狠的,這個程式語言就是Rust,Rust的健碩性那更是一言難盡。

    C++型別豐富是為了提高效能,方便不同的開發者在不同的場景下使用不同的資料型別,這樣能夠提高效率節省記憶體,當然這也確實給開發者增加了很多負擔。在C++中一切都是型別,地址、函式、物件、表示式、物件、事件全都是型別,型別還是型別,有的人確實不太習慣。

    可是話又說回來,單單說語法的話,Python確實極其簡單、Java極其臃腫,考慮到這點我建議大家直接學Go語言,你看Go語言效能也好、語法也比較簡單、還能處理好大併發、還有著出色的商業實踐,何樂而不選呢?

    學習程式語言不能一蹴而就,我現在還建議每一個初學者,一定要學學C語言、儘可能瞭解一點函數語言程式設計,當然能學學C++自然是最好的。Python作為一門語法相當簡單的程式語言,作為入門是非常好的,最終你進入這個行業,使用Java、C#、PHP、Go其實都無所謂,關鍵是你自己更喜歡和適合哪一個。

  • 5 # 井151276607

    用C++語言開發,如果你是看中了那些“庫”,你就掉到“坑裡”了。特別是你的應用系統需要“持久維護”時。你最好把眾多庫,做為研究、學習的物件,僅僅引入幾個穩定、小型的基礎工具。然後用面向物件技術設計你的目標系統;用C++抽象、實現你的應用系統目標中客戶的抽象“動作”(這句話很繞,一時找不到更清晰的表達方式),舉個例子:一個桌面出版系統的“編輯”工具集。

  • 中秋節和大豐收的關聯?
  • 樊城之戰關羽地盤上的兵力有多少?對曹軍連續的援兵有贏面嗎?