《C 沉思錄》 筆記

2021-08-28 17:10:36 字數 1423 閱讀 7265

calss trace

trace(file *ff)

void print(char *s)

void on()

void off()

private:

int noise;

file *f;

};

4.是不是每個建構函式初始化所有的資料成員?

5.類需要析構函式嗎?

6.類需要乙個虛析構函式嗎?

class b

~b()

};class d:public b

~d()

};void main(int argc,char *argv)

這時候的輸出是:

bd~d~b

bd~b

這個明顯不是我們想要的結果(new d,那麼應該呼叫d的析構,這裡呼叫的是b的析構),解決的辦法就是把b類的析構函式寫成虛函式。

8.你的類需要乙個賦值操作符嗎?

9.你的賦值操作符能正確的將物件賦給物件本身嗎?

string& string::operator=(const string& s)

11.刪除陣列時你用了 delete 了嗎?

char *p3=(char *)malloc(10);

delete p3;

char p1="acbdefghijk";

char *p2=p1;

printf("size p1=%d,size p2=%d\n",sizeof(p1),sizeof(p2));

c程式設計師希望使用malloc()分配記憶體,然後返回給c++函式,並希望能用delete來釋放那些記憶體,為此c++必須利用原來的malloc直接實現new,所以在c++釋放記憶體時,不一定要清楚陣列的大小,但要求被告知要刪除的是不是陣列(是的話可能會提供另乙個地方來儲存長度)。儘管有些c++實現只在陣列中的物件有特殊的析構函式時才要求這樣做,但是在刪除任何型別的陣列時使用語法任然是一種好習慣

13.如果函式有引用引數,它們應該是const引用嗎?

complex operator+(const complex& x,const complex& y);

class vector

int length(int length)

private:

int len;

};int padded_length(const vector& v,int n)

除非對length()的宣告加了const,否則標記了oops的行編譯通不過

C 沉思錄讀書筆記(三)

乙個物件導向的程式範例 物件導向程式設計的3個要素 資料抽象 繼承及動態繫結。這個例程非常完整的展示了這3個要素。程式要做的內容就是要將這個算術表達樹輸出,即得到 5 3 4 expressions標頭檔案 ifndef expression h h define expression h h in...

《C 沉思錄》學習筆記 上篇

1.2 說了 hello world 後再做什麼 32 2.技術 27 30 2.2 在簇中分配物件 28 2.3 應用器 操縱器和函式物件 29 2.4 將應用程式從輸入輸出中分離出來 30 3.庫 23 26 3.3 庫設計就是語言設計 3.4 語言的設計就是庫的設計 4.碎碎念 因為肺炎的事情...

C 沉思錄 控制代碼2

1 c 沉思錄 控制代碼1 存在問題 控制代碼為了繫結到point的物件上,必須定義乙個輔助類upoint,如果要求控制代碼繫結到point的子類上,那就存在問題了。2 有沒有更簡單的辦法呢?控制代碼使用point 直接繫結到point物件上 包括子類 為了保持多個控制代碼引用計數的一致性,使用in...