本博文為侯捷老師c++物件導向高階開發的課程筆記
一種基本的概念是我們學習c++不止要學習他們的語言,還要學習c++的標準庫
c和c++的不同
c語言在這設計程式的時候會準備一些資料和函式,根據資料的型別建立除一些變數,函式來處理這些變數,由於語言沒有提供足夠的關鍵字,所以這些資料一定是全域性的,這樣對程式是有影響的
c++的思路是把資料和處理資料的函式包在一起,把data member和member fucnctions包括在一起組成了class,用class建立了乙個個物件,程式無外乎就是資料和處理資料的方法。
對class的分類基本分為兩種,一種是帶指標的,一種是不帶指標的。
不帶指標型:基於物件的面對的是單一class的設計
帶指標型:物件導向的面對多重classes的設計
c++ program**的基本形式
①標頭檔案(header files)
②主程式(.cpp)+標準庫(hearder files)
在類的標頭檔案中的宣告
#ifndef _complex_
#define _complex_
//guard(防禦式宣告)
//第二次就不會進來,這樣避免了多次的include,減少消耗
#endif
inline函式的定義,函式在class body內定義完成就是inline,有利於提公升系統速度。
public:公開的被外界可以看到的函式
private:私有的不能夠被外界看到的資料
建構函式:
在c++語言中建立乙個物件,建構函式會自動呼叫起來
建立乙個類的三種基本方法
建構函式
complex(double r=0,double i=0):re(r),im(i){}
/*預設實參default argument double r=0,double i=0*/
/*re(r),im(i)把數放到實部和虛部裡,叫做初值列*/
①不帶指標的類,多半不用析構函式。
②:建構函式可以有很多個過載
singleton設計模式:
是一種把建構函式放入private的設計模式
class a
private:
a();
a(const a&rhs);
}a&a ::getinstance()
再來看一行**
double real() const
因為我們是要得到re的資料,而不會改變資料的內容,所以要加上const
引數傳遞的三種形式
①:pass by value :``double r=0`消耗空間大
②:pass by reference:(const complex&)傳引用,相當於傳指標,速度更快,形式更漂亮,並且不改變內容。
③:complex& 傳入引用,並且改變內容
操作符過載
(①,成員函式)
在c++裡操作符其實就是一種函式,所以我們能夠重新定義它。
首先我們來看一下編譯器如何看待操作符號
c2 += c1
+=是乙個二元操作符,編譯器會把+=作用域左元上,如果左元有對這行**有定義,所以就呼叫這種定義的函式
例如
inline complex&complex::operator +=(this,const complex& r)
//doap :do assignment plus 做賦值的加法
inline complex&_doap1(complex* ths,const comoplex& r)
換一種寫法
全域性的函式進行過載
operator+(const complex&x,const complex &y)
inline complex operator +(const complex&x,double y)
對輸出進行過載
#include ostream&
operator<<(ostream& os,const complex &x)
{ return os<<'('《總結:c++物件導向的設計,如同藝術的設計一般,千般變換,我們要追求一種大氣,正統的設計模式,寫出優質的**。
malloclab的一些思路
首先是參考書上第598 602頁 但是照搬書上的 只有六十多分 預設的也有七十多 注意到書上p594頁說,下一次適配很可能比首次適配記憶體利用率高,尤其是當鍊錶前面布滿了許多小碎片的時候,但在有些情況下,下一次適配不及首次適配,書上的 採用的是首次適配,因此嘗試下一次適配。兩者最大的差別就在於fin...
shelllab的一些思路
首先是eval函式 void eval char cmdline if bg addjob jobs,pid,fg,cmdline else addjob jobs,pid,bg,cmdline sigprocmask sig unblock,mask,null 如果不阻塞sigchld訊號,可能會...
一些基本的as
flash可以通過幀 按扭 影片剪輯來呼叫外部檔案。呼叫的外部檔案包括 外部文字檔案 外部程式檔案 外部 swf檔案 外部檔案 外部 檔案 外部指令碼檔案。一.呼叫外部文字檔案 文字檔案開頭要以flash中的動態文字框的變數名開頭,如 msg 這樣的形式,要和編輯的flash檔案放在同一目錄下 1....