C 類和物件 封裝

2021-10-13 07:41:49 字數 2965 閱讀 3558

c++物件導向三大特性:封裝、繼承、多型

①將屬性和行為作為乙個整體,表現生活中的事物

②將屬性和行為加以許可權控制

public-公共許可權 類內可以訪問,類外可以訪問

protected-保護許可權 類內可以訪問,類外不可以訪問

private-私有許可權 類內可以訪問,類外不可以訪問

在c++中struct和class唯一的區別就在於預設訪問許可權不同

區別:①struct預設許可權為公共

②class預設許可權為私有

優點1:將所有成員屬性設定為私有,可以自己控制讀寫許可權

優點2:對於寫許可權,我們可以堅持資料的有效性

①建構函式:主要作用在於建立物件時為對物件的成員屬性賦值,建構函式由編譯器自動呼叫,無須手動呼叫

②析構函式:主要作用在於物件銷毀前系統自動呼叫,執行一些清理工作

如果我們不提供構造和析構,編譯器會提供編譯器提供的建構函式和析構函式是空實現

兩種分類方式:

①按引數分類(無參和有參)

②按照型別分類(普通構造和拷貝構造)

拷貝: person(const person &p)

三種呼叫方法

①括號法

person p1;無參即預設建構函式

person p2(10);有參

person p3(p2);拷貝

注意事項:呼叫預設建構函式時候,不要加(),因為會被編譯器認為乙個函式的宣告,不會認為在建立物件

②顯示法

person p1;

person p2=person(10);有參

person p3=person(p2);拷貝

person(10);匿名物件 特點:當前執行結束後,系統會立即**掉匿名物件

注意事項:不要利用拷貝建構函式初始化匿名物件,編譯器會認為person(p3)===person p3;:物件的宣告

③隱式轉換法

person p4=10;相當於 寫了 person p4=person(10); 有參構造

person p5=p4;拷貝構造

c++中拷貝構造函式呼叫時機通常有三種情況

①使用乙個已經建立完畢的物件來初始化乙個新物件

②值傳遞的方式給函式引數傳值

③以值方式返回區域性物件

預設情況下,c++編譯器至少給乙個類新增三個引數

①預設建構函式(無參,函式體為空)

②預設析構函式(無參,函式體為空)

③預設拷貝建構函式,對屬性進行值拷貝

構造函式呼叫規則:

①如果使用者定義有參建構函式,c++不再提供預設無參構造,但是會提供預設拷貝構造

②如果使用者定義拷貝建構函式,c++不會再提供其他建構函式

淺拷貝:簡單的賦值拷貝操作

深拷貝:在堆區重新申請空間,再進行拷貝操作

語法: 建構函式():屬性1(值1),屬性2(值2)…

非靜態成員變數屬於類的物件上

靜態成員不屬於類的物件上

非靜態成員函式不屬於類物件上

靜態成員函式不屬於類物件上

空類佔儲存空間為1

①解決名稱衝突

this指標指向被呼叫的成員函式所屬的物件

②返回物件本身用*this

若不寫person& 直接寫person 就是值傳遞,是一種拷貝

①this指標的本質是指標常量(person *const this;),指標的指向是不可以修改的

const person * const this;此時不僅指標的指向是不可以修改的,指標指向的值也是不可以修改的

在成員函式後面加const,修飾的是this指向,讓指標指向的值也不可以修改

②特殊變數,即使在常函式中,也可以修改這個值,加關鍵字mutable

③在物件前加const,變為常物件

常物件只能呼叫常函式

關鍵字:friend

友元的三種實現

①全域性函式做友元

②類做友元

③成員函式做友元

①成員函式過載+號

person operator+(person &p)

這樣就可以實現 p3=p1+p2;

本質呼叫:p3=p1.operator+(p2);

②全域性函式過載+號

本質:p3=operator+(p1,p2);

因為全域性函式就不能呼叫類了即不能 p. 了

只能利用全域性函式過載左移運算子,再在類裡面先宣告函式的頭

使用上述方法過載可以 cout返回引用 cout

①過載前置++運算子,返回引用是為了一直對乙個資料進行遞增操作

②過載後置++運算子,後置是返回值

與上面類似,都是寫乙個函式然後比較物件裡面的值之類的資料

2 4 類和物件 C 封裝

目錄 一 封裝 1.封裝的意義 2.封裝的語法 3 訪問許可權 4 c 中struct和class的區別 5 成員屬性私有化 二 封裝示例 1.長方體類案例 2.圓與點的位置關係案例 c 物件導向的三大特性 封裝 繼承和多型。封裝是c 三大特性之一,其意義有 語法 class 類名 include ...

類和物件封裝

屬性和行為 案例 設計學生類 訪問許可權 class 和 struct 的區別 成員屬性私有化 設計案例1 立方體類 設計案例2 點和圓關係 1 屬性和行為 includeusing namespace std const double pi 3.14 c 物件導向的三大特性 封裝 繼承 多型 萬事...

類和物件(封裝)

c 物件導向的三大特性 封裝,繼承,多型。c 認為萬物皆為物件,物件上由屬性和行為。具有相同性質的物件,我們可以抽象為類。封裝 將屬性和行為作為乙個整體,表現生活中的事物 將屬性和行為加以許可權控制。封裝意義一 在設計類的時候,屬性和行為寫在一起,表現事物 語法 class類名 類中的屬性和行為統一...