1. 程式人生 > >對C++類和物件的簡單認識

對C++類和物件的簡單認識

C++類的定義:
類是定義同一類所有物件的變數和方法的藍圖或原型
類也可以定義類變數和類方法。可以從類的例項中或者直接從類中訪問類變數和方法。類方法只能操作類變數,不必訪問例項變數或例項方法。系統在第一次在程式中遇到一個類時為這個類建立它的所有類變數的拷貝,這個類的所有例項共享它的類變數

C++物件的定義:
定義一個類就相當於建立了一個新的class型別。要使用類,還必須用已經定義的類去說明它的例項變數(即物件)。在C++中,class型別一旦被定義,它的例項變數(物件)就能被建立,並初始化,且能定義指標變數指向它。例項化的類就是物件

類和物件其實是C語言裡的結構體的延伸,在C++裡,struct 和 class其實本質上是一樣的,唯一區別就是struct預設是公開的,class預設是私有的,公開時需要宣告為public;還有就是C語言裡的結構體,不能包含函式和繼承,C++可以包含函式以及繼承其他的類

物件兩要素:屬性和行為;

屬性對應於物件的資料;行為對應於函式;

物件之間可以通過一定的渠道相互聯絡;要使某一個物件實現某一種行為(操作),應當向它傳送相應的訊息

  封裝與資訊隱蔽 

可以對一個物件進行封裝處理,把它的一部分屬性和功能對外遮蔽,外界看不到,甚至不可知;這就是封裝。

所謂封裝有兩方面的含義:一是將有關資料和操作程式碼封裝在一個物件中,形成一個基本單位,各個物件之間相互獨立,互不干擾;二是將物件中的某些部分對外隱蔽,即陰部內部細節,保留少量介面,以便與外界聯絡,接受外界資訊。資訊隱蔽有利於資料安全,防止無關的人瞭解和修改。

  抽象:表示同一類事物的本質;類是物件的抽象,物件是類的特例,即類的具體表現形式;

  繼承和軟體重用

  多型

如果有幾個相似而不完全相同的物件,有時要求在向它們發出同一個訊息時,它們的反應各不相同,分別執行不同的操作,這種現象就是多型;

由繼承而產生的不同的派生類,其物件對同一訊息會作出不同的響應。增加程式的靈活性;

  面向物件程式的特點

區別於基於過程程式設計是圍繞功能進行的,用一個函式實現一個功能。而面向物件程式設計面對的是一個個物件。把資料和有關操作封裝成一個物件。

程式設計者的任務包括兩個方面:

一是對所需的各種類和物件進行設計,即決定把哪些資料和操作封裝在一起;

二是考慮怎樣向有關物件傳送訊息,以完成所需的任務;

結構化程式設計:程式=演算法+資料結構

面向物件程式設計:程式=物件s+訊息 (物件=演算法+資料結構)

  類的宣告和物件的定義

類是抽象的,不佔用記憶體;而物件是具體的,佔用記憶體空間;

類的成員訪問限定符:private/public/protected

private只能被本類中的成員函式引用,類外不能呼叫(友元類除外);預設為私有的;

public既可以被本類中的成員函式引用,也可被類的作用域內的其他函式引用,外界可呼叫;

protected它不能被類外訪問,但可以被派生類的成員函式訪問;

一般先寫public部分,再寫private私有部分;