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...