溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ 容易犯的錯誤和容易忘記的知識點(一)

發布時間:2020-07-30 18:40:28 來源:網絡 閱讀:176 作者:sonissa 欄目:編程語言
  1. 在使用printf輸出時,關于字符串輸出格式
    對于 %-a.bs:
    • 表示左對齊
      a 表示輸出占的寬度,如果這個寬度不夠,則自動擴展到足夠寬度
      b 表示輸出字符串中多少個字符,如果原字符串長于這個寬度,則截斷,多余的不輸出

2.關于指針數組和數組指針,比方說:
<1> int p1[10]; 和 <2> int (p2)[10];
分清楚的關鍵是依靠運算符優先級,[ ]優先級大于,所以p是一個數組,int 修飾的是數組的元素,所以<1>是在一個指針數組,每一個元素是一個指針
同理<2>是一個數組指針,是一個指向一個有十個元素的數組的指針。

3.關于內聯函數
<1>內聯函數中的代碼應該只是很簡單、執行很快的幾條語句。如果一個函數較為復雜,它執行的時間可能上萬倍于函數調用的額外開銷,那么將其作為內聯函數處理的結果是付出讓代碼體積增加不少的代價,卻只使速度提高了萬分之一,這顯然是不劃算的。

<2>有時函數看上去很簡單,例如只有一個包含一兩條語句的循環,但該循環的執行次數可能很多,要消耗大量時間,那么這種情況也不適合將其實現為內聯函數。

<3>需要注意的是,調用內聯函數的語句前必須已經出現內聯函數的定義(即整個函數體),而不能只出現內聯函數的聲明。

4.關于靜態成員變量
<1> 靜態成員為所有類對象所共享,不屬于某個具體的實例
<2>靜態成員變量必須在類外定義,定義時不添加static關鍵字
<3>類靜態成員即可用類名::靜態成員或者對象.靜態成員來訪問
<4>靜態成員函數沒有隱藏的this指針,不能訪問任何非靜態成員
<5>靜態成員和類的普通成員一樣,也有public、protected、private3種訪問級別,也可以具有返回值
<6>子類可以訪問父類的靜態成員
<7>靜態成員無多態特性

5.關于函數聲明
函數聲明中,參數名稱可以忽略不寫
eg:int Find( int , char );

6.C風格字符串相關
eg:、
char a="abcde";
char
b="abcde";
//此時a和b地址是相同的,都指向字符常量區的abcde
char c[]="abcde";
//此時c地址和a,b不同,因為c是一個數組,數組數據是存在棧區
char d[]={‘a’,'b','c','d','e'};
//d和c雖然定義時看起來內容一樣,但是大小不同,使用“ ”初始化的數組會多出一個‘\0’元素

7.關于結構體大小的計算
普通計算:
由于內存對齊的問題,各個數據類型放的位置不同就會導致結構體的大小不一樣。

偏移量:結構體中的偏移量就是結構體成員和結構體變量的地址之差,比如說第一個結構體成員的偏移量就是0,第二個結構成員的偏移量就是第一個結構體成員的大小,假如第一個成員的是int b;那么第二個結構體成員變量的偏移量就是4。

計算結構體大小的規則:

  1. 每一個成員的偏移量都必須是該成員的倍數。
  2. 結構體的大小必須是該結構體字節數最大成員的倍數。

有位段計算:
在32位cpu上選擇缺省對齊的情況下,每行支持4個字節即32bit
最后結構體大小為 (行數*32)/8 字節

8.純虛函數
使用場景:
什么情況下使用純虛函數(pure vitrual function)?
1.當想在基類中抽象出一個方法,且該基類只做能被繼承,而不能被實例化;
2.這個方法必須在派生類(derived class)中被實現;

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女