1. 程式人生 > >C++中面向物件的思想

C++中面向物件的思想

   C++語言是C語言的拓展,C語言是面向過程的,C++在C的基礎上增加了面向物件的方法。

        所謂面向過程的程式設計思想,就是分析解決問題的步驟,將這些步驟用一個個函式實現,最後一個個呼叫。

        所謂面向物件的程式設計思想,就是將任何事物都看成一個物件,物件有各種屬性(attribute)和行為(behavior),在解決問題的過程中,將系統分解,使之模組化。

        相對於面向過程的思想,面向物件的思想更適用於大型系統的開發。

        面向物件的程式設計有四個主要特點:抽象、封裝、繼承、多型。

        抽象(abstract):就是將不同物件的共性歸納、集中。在C++中,類是物件的抽象,物件是類的例項(instance)。

        封裝(encapsulation):就是將物件的內部實現和外部行為分隔開來,人們通過介面來進行外部控制,而不用關心內部細節。

        繼承(inheritance):在一個已存在的類的基礎上建立一個新的類,新的類具有它所繼承的類的全部特性,且可以增加一些新的特性。繼承可以說是面向物件的程式設計最重要的特點。它實現了軟體的可重用性(reuseability)。

        多型(polymorphism):當向不同的物件傳送同一訊息時,不同的物件在接收到訊息後會產生不同的行為。即,每個物件可以用自己的方法去響應共同的訊息。函式的過載就是多型一個很好的例子。

        C++作為一種面向物件的語言,所有內容都體現出了面向物件的思想。例如,定義一個整型變數int a,整型int就是一個類,變數a是這個類的一個物件,當這個物件被建立時,類的建構函式(constructor)被呼叫,用來初始化這個物件。C++的內建型別(built-in type)的預設建構函式不對物件進行初始化,所以定義int a後,a是沒有初始化的變數。而C++中的string和vector型別,它們的預設建構函式將物件初始化為空,所以當定義string a後,a已被初始化,初始化為的值為空,即a是一個空的字串。

        要注意初始化為空和沒有初始化是兩個不同的概念,當沒有初始化時,輸出這個變數,變數的值是不定的,不同的編譯器會輸出不同的值,而初始化為空以後,變數已經被初始化了,在不同的編譯器下,結果是一樣的。
       

The End

相關推薦

C++面向物件思想

   C++語言是C語言的拓展,C語言是面向過程的,C++在C的基礎上增加了面向物件的方法。         所謂面向過程的程式設計思想,就是分析解決問題的步驟,將這些步驟用一個個函式實現,最後一個個呼叫。         所謂面向物件的程式設計思想,就是將任何事物都

對java面向物件思想的理解

        java是一門純粹的面向物件的語言。面向物件這種程式設計模式它將現實世界中的一切事物都看作是物件,例如,一個人是一個物件,汽車、飛機、小鳥等等,都是物件;它強調從物件出發,以物件為中心用人類的思維方式來認識和思考問題。每個物件都具有各自的狀態特徵(也可以稱為

C++面向物件模型初探

C++中面向物件模型即類的封裝原理初探這裡主要概述成員函式的本質,這裡只是用C語言的方式來實現C++中類的功能,並不代表C++編譯器的真正做法,但C++編譯器實現原理大致如此。/*註釋部分為c程式碼的實現方式,也是C++編譯器的實現原理*/ #include <iost

C++ 面向物件思想

2018年10月31日 16:53:14 super J 閱讀數:1 標籤: C/C++ 面向物件

C語言實現面向物件思想

1. 使用結構體實現物件 與 C++不同的是, C 語言定義的成員函式增加了一個額外引數: lpThis,這是最關鍵的一點。實際上, C++語言在呼叫成員函式的時候,也隱含了一個指向自身的引數( this指標),因為 C 語言不支援這種隱含機制,因

資料結構之迴圈佇列(面向物件思想c++實現)

佇列是一種資料結構,它具有先進先出的特點,即FIFO(first in first out)。佇列一般有普通佇列和迴圈佇列兩種形式。我們用陣列來實現佇列,使用一般的普通佇列,當我們把隊頭元素out的時候,隊頭後的元素會逐一向前挪動,這樣就大大降低了處理效率。

C#面向物件思想深刻剖析

public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         private void btnStone_Cl

Trie樹(字典樹、字首樹)面向物件思想C++實現

Trie樹的功能、思想、實現都寫在程式碼註釋中了 使用: Trie trie = new Trie([TypeCase]); trie. TypeCase= Bit //二進位制 Number // 0-9數字 LowerCase //小寫字母

關於面試談談你對面向物件思想的認知的小結

        關於面向物件思想,想必在面試中被問到是家常便飯的事,今天結合自己的體會(雖然工作一年沒怎麼寫過C++),和藉助於網際網路資訊,對較好的觀點進行了彙總(大神可以繞道了,哈哈。)。當然在提

c#,用面向物件思想寫一個計算器

      設計模式的第一個例子之後,我再次體會到了做一個軟體,不僅僅是為了功能的實現,更多的是“為人民服務”!       不用面向物件的方法去寫,要實現一個簡單的只有“+ - * /”計算器,那是相當簡單的,只需獲取使用者輸入的數字和運算子,然後“A運算B”得出結果顯示

C#面向對象編程機制之多態學習筆記

tel codes var pub tools 不同 線程同步 dddddd 圖形 C#的多態性: 我的理解是:同一個操作,作用於不同的對象時,會有不同的結果,即同一個方法根據需要,作用於不同的對象時,會有不同的實現。 C#的多態包括:接口多態,繼承多態。 其中繼

面向物件思想----不看後悔!

面向物件思想----不看後悔! 前言:  整理這份資料的目的是為了幫助朋友們能夠更直觀的理解面向物件的程式設計。讓後來者能夠少走一些彎路。但其中不免有許多漏洞及錯誤,也還 請前輩提出寶貴的更改意見,畢竟交流會讓我們不斷的進步。  技術是日新月異的,他不會等待你的成長

Python3面向物件------繼承

     以下是我對Python3面向物件------繼承的理解,因為博主也是初學Python3,有很多東西都還停留在表層的理解,如果我的部落格有任何錯誤,請及時評論或者私信我,我會及時更改。也歡迎同樣學習Python的你願意關注我的部落格,我會把我每週的學習內容進行整

C++:面向物件程式設計

面向物件程式設計(OOP)基於三個基本概念:資料抽象、繼承和動態繫結(即封裝、繼承、多型)。 通過使用資料抽象,我們可以將類的介面與實現分離;使用繼承,可以定義相似的型別並對其相似關係建模;使用動態繫結,可以在一定程度上忽略相似型別的區別,而以統一的方式使用它們的物件。 動態繫結

C++Primer_Chap15_面向物件程式設計_List08_容器和繼承_筆記

  當我們使用容器存放繼承體系中的物件時,通常必須採用間接儲存的方式。因為不允許在容器中儲存不同型別的元素,所以不能把具有繼承關係的多種型別的物件之間存放在容器中。 在容器中放置(智慧)指標而非物件 vector<shared_ptr<Quote>> bas

C++Primer_Chap15_面向物件程式設計_List07_建構函式與拷貝控制_筆記

虛解構函式   虛解構函式由於動態繫結可以確保delete基類指標時將執行正確的解構函式版本。一般,如果一個類需要解構函式,那麼它同樣需要拷貝和賦值操作。但基類的解構函式不遵循上述準則,是一個重要的例外。   虛解構函式將組織合成移動操作。如果一個類定義了解構函

C++Primer_Chap15_面向物件程式設計_List03_04_05_06_筆記

 虛擬函式   由於當使用基類的引用或指標呼叫一個虛成員函式時會執行動態繫結。因為直到執行時才知道到底呼叫了哪個版本的虛擬函式,所以所有虛擬函式都必須有定義。   動態繫結只有當我們通過指標或引用呼叫虛擬函式才會發生。如果我們通過一個具有普通型別(非引用非指標)

C++Primer_Chap15_面向物件程式設計_List02_定義基類和派生類_筆記

class Quote{ public: Quote() = default; Quote(const std::string &book, double sales_price): bookNo(book), price(sales_price){} std::str

C++Primer_Chap15_面向物件程式設計_List01_OOP:概述_筆記

面向物件程式設計(object-oriented programming)的核心思想是資料抽象、繼承和動態繫結。   使用資料抽象,可以將類的介面與實現分離   使用繼承,可以定義相似的型別並對其相似關係建模   使用動態繫結,可以一定程度上忽略相似型別的區

Python面向物件的概念

1、語言的分類 1)面向機器 抽象成機器指令,機器容易理解。代表:組合語言。 2)面向過程 做一件事,排除步驟,第一步做什麼,第二步做什麼,如果出現A問題,做什麼處理,出現b問題,做什麼處理。問題規模小,步驟化,按部就班處理。  代表:c語言。 (按照步驟進行處理的。) 面向物件和麵向過