//從棧例項化物件
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...