天天看點

C++基礎

1、辨別符命名規則:

(1)由英文字母、數字和下劃線組成;

(2)英文字母的大小要加以差別;

(3)不允許使用數字開頭;

(4)不能用c++中的關鍵字。

2、c++提供了 const 關鍵字聲明常量,const 表示一個“常值變量”,即不能改變值的變量。

3、4294967295是32為cpu寄存器以及visual c++6.0編譯器所允許的最大正整數。

4、整型常量:

(1)十進制整型常量:十進制整型常量由0~9的數字組成。不能以 0 開頭,沒有小數部分。

(2)八進制整型常量:八進制形式整型常量必須以 0 開頭,即以 0 作為八進制數的字首。

(3)十六進制整型常量:十六進制整型常量的字首為 0x 或 0x。由0~9的數字和a~f(a~f大小寫相同)的字母組成。

實型常量:

(1)小數表示法;

(2)科學記數法:指數部分以符号“e”或“e”開始,但必須是整數,并且符号“e”或“e”兩邊都必須有至少一位數。例如:1.2e20, -3.4e-2

5、資料類型:

類型                    所占位元組數

char                            1

bool                            1

short                           2

int                               4

long                             4

float                            4

double                         8

long doubel                  8

6、易錯:

<a href="http://my.oschina.net/jacedy/blog/343354#">?</a>

1

2

3

<code>cout&lt;&lt;135/25&lt;&lt;endl;        </code><code>//輸出:5</code>

<code>cout&lt;&lt;135.0/25&lt;&lt;endl;        </code><code>//輸出:5.4</code>

<code>char</code> <code>arr[5] = </code><code>"hello"</code><code>;        </code><code>//錯誤的代碼,數組溢出</code>

7、在計算機中,資料都是以二進制形式表示,以位元組為最小機關進行存儲。

8、共用體的記憶體空間可以用來存放多種不同類型的成員,但是在某一瞬時隻有一個成員起作用,而起作用的成員是最後一次存放的成員。

9、大寫字母的ascii碼是從65開始的,而小寫字母的ascii碼是從97開始的,是以隻要将原字元的ascii碼加上32就可以獲得對應的小寫字母了。

(0 - 0;'0' - 48;'a' - 65;'a' - 97)

10、盡量不要在同一段代碼中的複合語句内外定義同名的變量,雖然這樣是合法的,但是不利于程式的閱讀,也容易出現邏輯錯誤。

11、switch語句中的break語句屬于跳轉語句,在switch語句中,當遇到break語句時,程式将跳轉到switch語句之後的下一行代碼處。如果switch語句中沒有使用break語句,當表達式與某個常量比對時,将執行目前case語句代碼,并且繼續向下執行case語句的代碼。直到遇到break語句或者switch語句結束。

12、在程式中使用do  while語句時,不要忘記while 語句部分在末尾要添加分号。

13、break語句跳出本層循環;continue語句跳出本次循環。

14、在程式設計中建議少用、慎用goto 語句,但是并不是禁用goto 語句,在嵌套的循環語句中,goto 語句可以直接跳出所有外層循環。

15、return語句将退出目前函數,傳回到調用該函數的地方,開始執行吓一跳語句;

       exit 語句用于終止目前調用的程序,通常用于結束目前的應用程式。

16、在函數調用的時候要注意是傳值調用還是傳址調用。

17、省略号“…”也是參數,代表函數的參數是不固定的,可以傳遞一個或多個參數。

18、重載函數是指多個函數具有相同的函數名稱,而參數類型或參數個數不同。

(1)函數的傳回值類型不作為區分重載函數的辨別;

(2)對于普通的函數參數來說const 關鍵字不作為區分重載函數的辨別;

(3)如果參數的類型是指針或引用類型,則const 關鍵字将作為重載函數的辨別;

(4)參數的預設值不作為區分重載函數的辨別;

(5)使用typedef 自定義類型不作為重載的辨別。

19、在c++中定義類時,類名通常以答謝字母c開頭,成員變量以“m_”為字首,這是一個約定俗成的習慣。

20、定義類的成員變量與定義普通的變量有所不同,那就是不能夠在定義時對成員變量進行初始化。

21、析構函數不能夠被重載,一個類隻能有一個析構函數。

22、當定義一個類對象時,首先從頂層依次調用基類的構造函數,最後調用自身的構造函數;析構函數的調用順序與構造函數正好相反,首先調用自身的析構函數,然後依次調用基類的析構函數。

23、對于多繼承,c++語言提供了虛繼承的機制,虛繼承使得子類中隻存在一個基類。

24、定義宏時,最好對每個資料加上括号,防止造成二義性問題,宏定義隻是簡單的替換。

25、在c語言中,const的用法主要有定義常量、修飾函數參數、修飾函數傳回值等3個用處。在c++程式中,它還可以修飾函數的定義體,定義類中某個函數為恆态函數,即不可改變類中的資料成員。

26、内聯函數inline是指嵌入代碼,就是在調用函數的地方不是跳轉,而是直接把代碼寫到那裡去。

27、const常量指派時,必須同時初始化;聲明一個引用,引用不能為空,同時必須初始化。

28、c++的空類預設産生四個函數:預設構造函數、析構函數、拷貝構造函數和指派函數。

29、面向對象技術的基本概念是:類、對象、繼承。

30、struct 與class 的差別在于:struct中變量預設是public, class中變量預設是private。

31、類中的成員變量要初始化必須是在構造函數中或将其設定為static。

32、析構函數可以是内聯函數。

33、析構函數可以是virtual 虛函數類型,但構造函數則不能。

34、覆寫(override)的函數必須有一緻的參數表和傳回值;重載(overload)是指編寫一個與已有函數同名但參數表不同的函數。

35、虛繼承就是為了節約記憶體的,他是多重繼承中的特有的概念。适用與菱形繼承形式。

       虛函數繼承就是覆寫。即基類中的虛函數被派生類中的同名函數所覆寫。

36、左移運算符(&lt;&lt;)是雙目運算符,其功能是把"&lt;&lt;"運算符左邊的運算數的各二進位全部左移若幹位,移動的位數由"&lt;&lt;"     運算符右邊的數指定,高位丢棄,低位補0。   如:a&lt;&lt;2 //代表a的二進數向左移動2位。實際上左移一位相當于該數乘以2,稱動2位 相當于該數乘以4,以此類推。這種情況隻限于移動位不含1的情況。 

      右移運算符(&gt;&gt;)是雙目運算符,其功能是把"&gt;&gt;"運算符左邊的運算數的各二進位全部右移若幹位,移動的位數按"&gt;&gt;"     運算符右邊的數指定。在進行右移時對于有符号的數需要注意符号問題,當為正數時,最高位補0,而為負數時,最高位補0或1取決于編譯      系統的規定,移入0的稱為"邏輯右移",移入1的稱為"算術右移"。(visualc++)是以算術右移。

37、c語言判斷漢字:

4

5

6

7

<code>if</code><code>(is_zh_ch(</code><code>char</code> <code>p)!=0);</code>

<code>int</code> <code>is_zh_ch(</code><code>char</code> <code>p)</code>

<code>{</code>

<code>     </code><code>if</code><code>(~(p &gt;&gt; 8) == 0)</code>

<code>          </code><code>return</code> <code>0;</code>

<code>     </code><code>return</code> <code>-1;</code>

<code>}</code>

        和文字表示方法有關。西文字元一個位元組(char)就可以表示(ascii碼中包括了所有的西文字元),因為一個char隻有8位,最多表示256個文字,是以而非西文字元的文字(unicode)全部用兩個位元組表示,機器内部的最小存儲機關是位元組,為了區分連續的兩個char表示的是一個unicode還是兩個西文字母,規定unicode碼的兩個位元組的最高位都是1。

<code>if</code><code>(~(p &gt;&gt; 8) == 0) </code>

<code>    </code><code>return</code> <code>0;</code>

的意思是,将char p的符号位(char為8位,即最高位)右移,若是unicode則p&gt;&gt;8後為1111 1111,然後按位取反為0

        其實原理上面說過了,unicode碼最高位為1,即符号位為1,上面的代碼和下面的等價:

<code>    </code><code>if</code><code>(p&lt;0) </code>

<code>        </code><code>return</code> <code>0;</code>

<code>    </code><code>return</code> <code>-1;</code>

繼續閱讀