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類名 類中的屬性和行為統一...