C 筆記( 封裝(上))

2021-10-01 05:01:53 字數 2374 閱讀 2116

//從棧例項化物件

tv tv;

tv tv[20]

;//從堆中例項化物件

tv *p =

newtv()

;tv *q =

new tv[20]

;delete p;

delete

q;p=null;q=

null

;

//從棧例項化的物件如何訪問

intmain

(void

)//從堆例項化的物件如何訪問

intmain

(void

)

c++屬性封裝

物件導向的基本思想就是要以物件為中心,具體來說就是要以誰做什麼來表達程式的邏輯,體現到**層面就是將所有的資料操作轉化為成員函式的呼叫。

//舉例,定義乙個學生類

class

student

intgetage()

private

: string name;

int age;..

....

};

類外定義

同檔案類外定義

成員函式雖然定義在類的外面,但是其定義與類的定義在同乙個檔案當中

//例子,有乙個car.cpp

class

car;

void car::

run(

)void car::

stop()

void car::

changespeed()

分檔案類外定義

分檔案類外定義的時候需要先定義乙個.**件,也叫作標頭檔案,類名和檔名建議寫成一致。

//例子car.h

class

car;

//在寫乙個檔案car.cpp

#include

"car.h"

void car::

run(

)void car::

stop()

void car::

changespeed()

建構函式和析構函式

棧區:定義乙個變數,記憶體由系統來控制int x = 0; int *p = null;堆區:堆區的記憶體需要程式設計師自己操作和管理int *p = new int[20];全域性區:儲存全域性變數及靜態變數

常量區:string str = "hell0";**區:儲存邏輯**的二進位制

有且僅有一次(重點)

根據條件來初始化

為了避免在初始化函式時的誤操作,例如忘記呼叫了初始化函式或者是重複呼叫了初始化函式,從而推出了建構函式。

建構函式:

預設建構函式

在例項化物件時不需要傳遞引數的建構函式就稱為預設建構函式。

class

student

student

(string name=

"jim"

)private

: string m_strname;

};

建構函式初始化列表
//初始化列表的例子

class

student

//初始化列表

private

: string m_strname;

int m_iagel;

};

初始化列表先於建構函式執行

初始化列表只能用於建構函式

初始化列表可以同時初始化多個資料成員

拷貝建構函式

定義格式:類名(const類名&變數名)

拷貝建構函式的引數是確定的,不能過載

//例子

class

student

student

(const student &stu)

//拷貝建構函式,傳入的是乙個引用

private

: string m_strname;

};

析構函式:

在物件銷毀時會被自動呼叫,完成的任務是歸還系統的資源。

定義格式:~類名()

注:析構函式不允許加任何引數

特性:如果沒有自定義的析構函式則系統自動生成

析構函式在物件銷毀時自動呼叫

析構函式沒有返回值,沒有引數也不能過載

物件的生命歷程:

向作業系統申請記憶體

初始化列表

建構函式

參與運算

析構函式

釋放記憶體

axios 封裝上傳檔案的請求

axios 和 ajax 都支援非同步請求,兩者使用方法大同小異,在此使用 axios 上傳檔案的請求。使用的時候只需要在響應的 vue 元件中引入就可以。上傳檔案的請求 這裡提前處理返回的資料 if data.message data.data login.invalid.token return...

C 學習筆記 封裝

所謂封裝就是將某些東西包裝盒隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是通過外部介面以及特定的訪問許可權來使用類的成員。類通常分為以下兩個部分 封裝的基本概念 因此,需要在類的表示法中定義屬性和行為的公開級別...

C 筆記( 封裝(下))

c 物件陣列和物件成員 物件陣列 例子 class coordinate int main void 物件成員 初始化時先初始化成員物件,再初始化總物件,銷毀時先銷毀總物件再銷毀其中成員物件。使用物件成員的例子 include include include line.h using namespa...