C 中的物件導向 01 類的初始化和釋放

2021-07-29 07:38:51 字數 1976 閱讀 4067

先來談談什麼是物件導向(oop:object oriented programming)

拿做番茄炒雞蛋為例子。材料:雞蛋、番茄、油鹽等等,做法:放油、放雞蛋、放番茄、放雞蛋等等。這就資料和演算法。c語言更注重演算法,也成為面向過程,自上而下的設計,講究先討論是先放雞蛋還是先放番茄,再討論怎麼放,放多少的問題。

c++呢?更注重資料,也叫自下而上的設計,就是先把放幾個雞蛋都寫好,放乙個是乙個方法,放兩個是乙個方法,然後你怎麼放,直接呼叫這些方法就行了。所以前人栽樹辛苦點,後人乘涼很爽,適合大型的軟體設計。

那這就設計到封裝,把材料,放多少都放在乙個地方,然後後面直接呼叫就行了,這就是類。類裡面包含著資料和操作,比如雞蛋,然後寫上打乙個雞蛋、打兩個雞蛋的方法,取個名,叫雞蛋及使用;然後在主程式做番茄炒雞蛋的時候,直接呼叫雞蛋類、番茄類等類就行了。而且還可以擴充套件,加乙個韭菜類就可以韭菜煎雞蛋了。

再來看看定義

new delete和malloc free 的重要區別

new = malloc+構造;delete = 析構+free;

(對於類多用new和delete,對於基本資料型別沒什麼區別)

1.malloc/free是c/c++語言的標準庫函式,new/delete是c++的運算子。

2.new能夠自動分配空間大小。

類的初始化

三種方案:顯式 、隱式、構造+析構。

如果我們不寫建構函式,系統會提供乙個預設無參建構函式,什麼都不幹。不寫拷貝建構函式,系統也會提供乙個預設拷貝函式,稱為淺拷貝,主要初始化下成員變數,其實也基本什麼都沒乾。我們可以自己設定拷貝建構函式,稱為深拷貝,來初始化成員變數。

值得注意的是:只要寫了建構函式就必須用,系統不會再給預設的方式。

#include 

using namespace std;

class test88

//有參建構函式

test88(int a)

//無引數建構函式

test88()

//賦值建構函式 copy建構函式

test88(const test88 &obj)

int getb()

void seta(int a)

void setb(int b)

private:

int m_a;

int m_b;

};void f ( test88 p ) //執行完後,會呼叫析構函式釋放形參

test88 g()

int main()

; for (int i=0;i<3;i++)

/////////

//////

//////

//////

//////

//////

////////

test88 t1; //預設的就是無參的

t1.seta(1);

t1.testprint();

//拷貝建構函式的四種應用場景

//第一種,賦值建構函式(和=操作是兩個不同的概念)

test88 t2 = t1;

t2.testprint();

//第二種,用t1初始化t2,和第一種差不多

test88 t3(t1);

t3.testprint();

//第三種,實參去構造形參

test88 t4(30);

f(t4);

t4.testprint();

//第四種,返回值構造

test88 t5;

t5 = g(); //此時用的是淺拷貝,就是=操作

t5.testprint();

t2 = t1; //是物件的=操作,系統提供的淺拷貝

return

0;}

c 中成員物件初始化和類繼承初始化

對於繼承的物件,建構函式在成員初始化列表中使用類名來呼叫特定的基類建構函式。對於成員物件,建構函式則使用成員名。例如 ifndef h frabjous define h frabjous include class frabjous virtual void tell gloam gloam in...

物件導向 類 類 例項初始化)

1 類的成員 public class testblock class myclass 結果為 這是非靜態 塊 無參構造 在每次建立物件時都執行 public class testblock class myclass public myclass string str 結果為 這是非靜態 塊 無參...

C 類和物件 物件的初始化和清理

4.2.1 建構函式和析構函式 物件的初始化和清理也是兩個非常重要的安全問題 乙個物件或者變數沒有初始狀態,對其使用後果是未知 同樣的使用完乙個物件或變數,沒有及時清理,也會造成一定的安全問題 c 利用了建構函式和析構函式解決上述問題,這兩個函式將會被編譯器自動呼叫,完成物件初始化和清理工作。物件的...