為什麼物件如此重要 C 學習筆記之一

2021-06-10 09:06:55 字數 1583 閱讀 2425

對於物件導向的程式設計方法,首先要建立物件的概念:

1、萬物皆為物件。物件可以被認為是乙個奇特的變數,他能存放資料,並且可以對他提出請求,要求他執行自身的運算。

2、程式就是一組物件,物件之間相互通過傳送訊息互相通知做什麼。更具體的講可以將訊息看做對於某個物件的某個特定方法。

3、每個物件都有他自己的由其他物件構成的儲存區。這樣就可以通過已經存在的物件來構造新的物件,因此程式設計師可以構造出複雜的程式,而且可以將複雜性隱藏在物件的簡明性之後。

4、每個物件都有乙個型別。採用oop術語,每個物件都是某個類的乙個例項。

5、乙個特定型別的所有物件都可以接收相同的訊息。子類能夠繼承父類的所有方法,這是oop的強大思想之一。

c++的特性一:實現的隱藏

程式設計師分為兩類:1、類開發者,2、應用開發者。類開發者的目標是建立類,這個類只暴露給應用開發者必須要知道的東西,其他的資訊都隱藏起來。因為如果應用開發者不需要,就沒有必要暴露,被隱藏的通常是類的內部管理功能,容易受到物質的應用開發者的損害,所以隱藏可以減少程式的錯誤,隱藏的概念怎麼強調都不過分。隱藏的另外乙個好處就是:你可以改變乙個類的內部實現,而不必擔心這樣做會影響應用程式的功能。c++中使用了明確的關鍵字來設定類的邊界:public,private,protected。

c++的特性二:實現的重用

**重用是物件導向的程式語言最大的優點之一,但是重用性並不是想所希望的那樣容易達成,產生乙個好的設計需要經驗和洞察力。重用乙個類最簡單的方法就是直接使用這個類的物件,或者將這個類的物件放到新的類當中。

組合具有很大的靈活性。因為繼承在物件導向的程式設計中很重要,所以它通常得到高度的重視,並且新的程式設計師在任何地方都想到繼承的方法,這會造成笨拙的複雜設計。實際上,當建立新類的時候,程式設計師應該首先考慮組合,因為它更簡單,更靈活。採用組合的方法,設計將變得清晰,而且一旦我們掌握了組合的經驗之後,就明顯的知道什麼時候應該採用繼承。

c++特性之三:重用介面

物件本身是乙個很方便的工具,當我們克服了很多困難建立了乙個類,在之後需要建立乙個具有類似功能的類的時候我們就可以選取已存在的類,轉殖它,然後再修改,則是再好不過的事情。實際上,使用物件導向的設計,人們的困難之一在於從開始到結束過於簡單,乙個習慣於尋找複雜解的訓練有素的大腦,往往會被問題的簡單性所難住。當我們從已經存在的類繼承的時候,我們就建立了乙個新的型別,這個型別包含所有被繼承類的屬性和方法。

c++特性之四:介面的過載

雖然繼承可以繼承基類的所有屬性以及方法,但是派生類還是有一些區別於基類的屬性,c++中提供改變基類函式方法的行為,「過載」,從而使派生類具有不同行為屬性。當然新增屬性的方法可以使過載,也可以是直接定義新的函式介面。

c++特性之五:多型性

首先來定義兩個概念:「早**」和「晚**」。早**指編譯器會對特定的函式名產生的呼叫,而聯結器會將這個呼叫解析為所執行**的絕對位址。晚**是指當給物件型別傳送訊息時,編譯器保證這個函式呼叫的存在,並執行函式引數和返回值得型別檢查,但是他並不知道執行的確切**。在c++中我們可以用virtual關鍵字來宣告某個函式具有晚**的靈活性,其可以表示出相同家族中的類具有不同的行為。

c++特性之六:物件的建立和銷毀

c++中把效率控制作為首要原則,可以通過靜態或者動態的建立物件

為什麼GPU對於深度學習如此重要

計算機發展到今天,已經大大改變了我們的生活,我們已經進入了智慧型化的時代。但要是想實現影視作品中那樣充分互動的人工智慧與人機互動系統,就不得不提到深度學習。2015年4月15日,nvidia在北京舉行 gpu計算開啟深度學習的大門 主題分享會,與廣大 分享了其在gpu研發方面取得的成績和最新的研究成...

為什麼IT安全組如此重要?

安全組會保護亦會破壞您的it網路安全,該組成員主要負責管理網路中的訪問許可權,如對資源和資料的訪問許可權。但您有沒有想過,乙個組成員身份的配置錯誤可能會導致一些安全事件的發生?深度剖析組成員許可權 在安全方面,active directory和azure ad中的組成員身份通常會被低估,成員身份通常...

譯文 為什麼軟體架構如此重要?

本文翻譯自 why software architecture matters 拋開某項特定的技術或某個特定的專案不說,這篇文章我想講講關於犯錯這個話題。談論和讚揚成功也許很輕鬆,但是我發現犯錯仍是個很有意思的話題。主要是因為它們在學習的過程中頗有用處。一開始我將講一些背景知識,然後闡述一下我對軟體...