第三節 類和物件的基本概念 一

2021-06-26 20:36:17 字數 2160 閱讀 9985

結構體預設情況下是共有的,類的成員在預設情況下是私有的

包括資料成員和成員函式

資料成員可以是任何的資料型別,但是不能用extern(

外部型,不是在當前程式段分配記憶體

),auto(

自動型,不宣告就是

),register(

暫存器型

)指定它的儲存型別,可以是

static型別

不能在類的宣告中給資料成員賦初值

class abc ;

成員函式要在類體內宣告,還要在類外定義,成員函式在類內部定義就是內聯函式

class point

//內聯函式第一種表示

inline int gety();   //內聯函式第二種表示};

void point::setpoint(int a, int b)

inline int point::gety()

類外定義函式名前加  類名::

成員函式若有引數要有完整的引數說明

成員函式的返回型別應與函式原型宣告的相同

是類的乙個例項

同類的多個物件佔據記憶體的不同區域,每個物件儲存的資料不同,但是用來運算元據的程式**是一樣的,即使用相同的成員函式

建立物件

class point

op1,op2;   //op1,op2是全域性變數 

main ()

物件賦值

兩個物件賦值時,型別必須相同,兩個物件分別占用不同的儲存空間,若類的成員是指標型別,可能出錯

使用同名物件時應加作用域運算子」::」

建構函式與類名相同,是共有函式,不能指定返回型別,void

也不行,不能顯示呼叫

靜態物件,只構造一次

全域性物件,在執行main()

之前呼叫

外部物件,程式並不為它呼叫建構函式

建構函式可以過載

為類定義了帶引數建構函式時c++

編譯器不產生預設建構函式

可以採用構造初始化表對資料成員進行初始化c++

編譯器也不產生預設建構函式

拷貝建構函式

型別 (const 

類名 &

物件名);

類名::

類名 (const 

類名 &

物件名) //

沒有反值

(建構函式沒反值) 

拷貝建構函式

如果沒有定義拷貝建構函式,系統就會產生乙個預設的拷貝建構函式

如果所定義的類的資料成員是普通的變數(

不是指標,不是陣列

),沒必要寫拷貝建構函式。如果有指標或者陣列,如果建構函式中存在需要動態分配記憶體的資料成員,必須定義拷貝建構函式,不然會出錯

呼叫拷貝建構函式的地方

新建物件

point p2(p1);

函式的形參是個物件,那麼傳遞的時候體統就會呼叫實參的拷貝建構函式

void f(a a)

void main()

如果函式的反值是個物件,這裡也會呼叫拷貝構造

a fn(a &a)

void main()

物件賦值的時候也會呼叫拷貝建構函式

point p1(10,20);

point p2=p1;   //等價於

point p2(p1);

資料型別轉換

int num;    //example try(num);

float x, float y;    //point p (x,y);

char a=

」hello

」;    //string s(a);

在類定義體中,與類同名,並在前面冠以」~」的成員函式

釋放物件在構造時分配的資源

關閉被建構函式開啟的檔案

釋放動態記憶體

物件的生命週期結束時,由體統自動呼叫

呼叫順序與建構函式相反

析構函式沒有返回型別,沒引數,析構函式不能過載

資料成員是指標來代替陣列,一開始不知道陣列需要開多大的空間

等具體的時候再決定指標的陣列需要多的記憶體空間,這樣就不浪費

class string_data

~string_data()

void get_info(char &);

void sent_info(char *char); }

第三節 定義乙個類 3

當你宣告乙個類,你需要列出物件應有的所有變數和所有函式 被稱為屬性和方法.3.1.1中顯示了乙個類的構成.注意在大括號 內你只能宣告變數或者函式.3.1.2中顯示了如何在乙個類中定義三個屬性和兩個方法.3.1.1 class name extends another class 3.1.2 www....

Python 物件導向(第三節課)

用了兩次markdown,還是用不習慣。先不用了,這個東西也是要學習成本的,等學完這段再研究一下。目前可能是我不會用的緣故,我感覺不順手,效率很低。所以還是用富文字編輯器吧。第三節課,先回顧一下上節課的,正好在此用乙個 把一些定義再捋一捋,這樣有助於消化和記憶,下面直接上 例項方法 類方法靜態方法 ...

第三節 基本操作之資料 更新

102update 是修改前的鍵值對 修改後的鍵值對 查詢乙個x 2的資料 db.config collection.find 修改它的值為100 db.config collection.update 再次查詢x 2的值 結果沒有這個值 查詢x 100的值 存在並且 id 為1 表明修改成功 部分...