C++易混部分

數組

  • 數組作爲函數參數傳遞時,括號內不需要帶具體個數
 void function( int a[], unsigned int n)...void function( int *p, unsigned int n)...int a[10];
 function(a, 10);
  • sizeof的值
int a[10];
sizeof(a) = 40sizeof(a[0]) = 4
  • 數組名是常數,不能賦值,如a++,但指針可以
  • 不能對數組進行整體賦值,但初始化可以
char s[9] = "CPP-Prog"; // 正確
char s[9]; s = "CPP=Prog" // 錯誤
  • 多維數組作爲函數參數,不能每維都不傳遞元素個數
void function(int a[][], unsigned int n, unsigned int m) //錯誤寫法
void function(int a[][3], unsigned int m) //正確寫法

指針常量和常量指針

  • 常量指針:指向常量的指針,不能通過指針修改指向對象的值,但可以改變指針值
int n = 10; const int * p = &n 
  • 指針常量:指針指向的位置不可變化,但可以修改指針指向對象的值,必須在定義時初始化
int n = 10; int * const p = &n
  • 常量指針常量:指針值不可改變,指向對象的值也不可改變
int n = 10; const int * const p = &n

指針與函數返回值

  • 指針類型可以作爲函數返回值,返回某個數據對象的地址
  • 不能返回局部變量的地址,只能放回全局變量地址

指針運算

  • 指針與整數加減:以指向的目標數據對象類型爲單位,而不是以字節爲單位

回調函數

  • 回調函數通過函數指針類型實現,使用函數指針作爲參數傳遞。
  • 函數指針所指向的函數定義可以在未來再實現

面向對象

  • 基類析構函數爲什麼要定義爲虛函數?

當基類指針指向派生類的時候,若基類析構函數不聲明爲虛函數,在析構時,只會調用基類而不會調用派生類的析構函數,從而導致內存泄露。

  • 構成多態的條件
  1. 必須通過基類的指針或者引用去調用函數。
  2. 基類中必須包含虛函數,且在派生類中必須完成了虛函數的重寫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章