學好c++必須要注意的十八個問題:
一、#include 「filename.h」和#i nclude 的區別
#include 「filename.h」是指編譯器將從當前工作目錄上開始查詢此檔案
#include 是指編譯器將從標準庫目錄中開始查詢此檔案
二、標頭檔案的作用
加強安全檢測
通過標頭檔案可能方便地呼叫庫功能,而不必關心其實現方式
三、* , &修飾符的位置
對於*和&修飾符,為了避免誤解,最好將修飾符緊靠變數名
四、if語句
不要將布林變數與任何值進行比較,那會很容易出錯的。
整形變數必須要有型別相同的值進行比較
浮點變數最好少比點,就算要比也要有值進行限制
指標變數要和null進行比較,不要和布林型和整形比較
五、const和#define的比較
const有資料型別,#define沒有資料型別
個別編譯器中const可以進行除錯,#define不可以進行除錯
在類中定義常量有兩種方式
1、 在類中宣告常量,但不賦值,在建構函式初始化表中進行賦值;
2、 用列舉代替const常量。
六、c++函式中值的傳遞方式
有三種方式:值傳遞(pass by value)、指標傳遞(pass by pointer)、引用傳遞(pass by reference)
void fun(char c) //pass by value
void fun(char *str) //pass by pointer
void fun(char &str) //pass by reference
如果輸入引數是以值傳遞的話,最好使用引用傳遞代替,因為引用傳遞省去了臨時物件的構造和析構
函式的型別不能省略,就算沒有也要加個void
七、函式體中的指標或引用常量不能被返回
char *func(void)
函式體內的指標變數並不會隨著函式的消亡而自動釋放
八、乙個記憶體拷貝函式的實現體
void *memcpy(void *pvto,const void *pvfrom,size_t size)
九、記憶體的分配方式
分配方式有三種,請記住,說不定那天去面試的時候就會有人問你這問題
1、 靜態儲存區,是在程式編譯時就已經分配好的,在整個執行期間都存在,如全域性變數、常量。
2、 棧上分配,函式內的區域性變數就是從這分配的,但分配的記憶體容易有限。
3、 堆上分配,也稱動態分配,如我們用new,malloc分配記憶體,用delete,free來釋放的記憶體。
十、記憶體分配的注意事項
用new或malloc分配記憶體時,必須要對此指標賦初值。
用delete 或free釋放記憶體後,必須要將指標指向null
不能修改指向常量的指標資料
十一、內容複製與比較
//陣列……
char a=」hello word!」;
char b[10];
strcpy(b,a);
if (strcmp(a,b)==0){}
//指標……
char a=」hello word!」;
char *p;
p=new char[strlen(a)+1];
strcpy(p,a);
if (strcmp(p,a)==0){}
十二、sizeof的問題
記住一點,c++無法知道指標所指物件的大小,指標的大小永遠為4位元組
char a=」hello world!」
char *p=a;
cout << sizeof(a) << endl; //12位元組
cout << sizeof(p) <
class base
student s = ; //初始化student的例項s
cout <
class baseclass
};class derivedclass: public baseclass
};void print(baseclass* pbc)
int main( )
v-table (virtual function table)
當c++程式呼叫非虛函式, 採用與c程式呼叫函式所用方式一樣的靜態繫結來呼叫函式. 但是c++程式 若是透過指向類別的指標來呼叫虛函式時, 編譯程式則採用所謂的晚期繫結(late binding)或靜態繫結 (static binding)技術來呼叫函式.
而c++虛函式用虛函式表(virtual function table), 或稱v-表來實作動態繫結, 所謂的v-表是一 個函式指標的陣列, 這是編譯程式替每個使用虛函式的類所建制的。
純虛函式 (pure virtual function)
乙個不僅可被重新定義, 而且必須被重新定義的成員函式就稱為純虛函式, 你只要指定函式乙個零值 (更有效說法是乙個空指標),就可將虛成員函式轉為純虛成員函式,如以下所示
virtual void printdata() = 0;
抽象類 (abstract class)
當乙個類含有至少乙個純虛函式時, 此類就稱為抽象類,而你無法以此類來衍生建立物件.
五、c++ template classes
一般的宣告及使用
class collection
collection object;
模板的宣告及使用
template class t> //注意這裡
class collection// generic declaration
collection int> object; //注意這裡
collection char> object; //注意這裡
學好C 必須要注意的十八個問題
學好c 必須要注意的十八個問題 一 include filename.h 和 i nclude 的區別 include filename.h 是指編譯器將從當前工作目錄上開始查詢此檔案 include 是指編譯器將從標準庫目錄中開始查詢此檔案 二 標頭檔案的作用 加強安全檢測 通過標頭檔案可能方便地...
C語言初學者的十八個注意點
c語言初學者的十八顆 地雷 c語言的最大特點是 功能強 使用方便靈活。c編譯的程式對語法檢查並不象其它高階語言那麼嚴格,這就給程式設計人員留下 靈活的餘地 但還是由於這個靈活給程式的除錯帶來了許多不便,尤其對初學c語言的人來說,經常會出一些連自己都不知道錯在 的錯誤。看著有錯的程式,不知該如何改起,...
關於使用layer必須要注意的地方
layer 是一款近年來備受青睞的web彈層元件,使用該外掛程式時可以通過open方法開啟相應對話方塊,但是open方法有乙個type屬性,這個屬性在使用時需要特別注意,如果不匹配就會報錯!layer提供了5種層型別。可傳入的值有 0 資訊框,預設 1 頁面層 2 iframe層 3 載入層 4 t...