C++基本知識點(一)

第一篇

1. 指針初始化

int * p1 = new int(10)
int * p2 = new int[10]
int * p3 = new int[10]()

P1是初始化一個整型變量,初始化值爲10。
p2,p3是一個指向數組的指針。
對於內置類型而言,new僅僅是分配內存,除非後面顯示加(),相當於調用它的構造函數。
對於自定義類型而言,只要一調用new,那麼編譯器不僅僅給它分配內存,還調用它的默認構造函數初始化,即使後面沒有加()。

2. enum枚舉

enum枚舉類型是C/C++中的一種數據類型,與struct和class一樣是用戶自定義的類型,其特點在於enum類型的變量取值是有限的,是可以一一列舉出來的。

enum bool {false,true};  //bool類型就是C++預定義的枚舉

枚舉在C語言標準裏面定義的就是整型,不管哪個編譯器都遵循這個標準。
在系統內部,C語言會把枚舉變量和常量作爲整數來處理,默認情況下,編譯器會把整數0、1、2、3……賦給特定枚舉中的常量。

enum {Sun, Mon = 5, Tue, Wed, Thu, Fri, Sat} d1, d2, d3, d4;
	d1 = Sun;    //初始化
	d2 = Mon;    //初始化
	d3 = Tue;    //初始化
	d4 = Wed;    //初始化
	cout << d1<<endl;
	cout << d2 << endl;
	cout << d3 << endl;
	cout << d4 << endl;

程序輸出爲:0, 5, 6, 7

d1,d2,d3,d4在函數內部定義時,一定要進行初始化,不然會是一個隨機值。
d1,d2,d3,d4在函數外部定義時,自動進行初始化,值0。

3. 指針和數組的sizeof

32位機器上:

void example(char acWelcome[]){
    printf("%d",sizeof(acWelcome));
    return;
}
void main(){
    char acWelcome[]="Welcome to Huawei Test";
    example(acWelcome);
    printf("\n%d\n", sizeof(acWelcome));
    return;
}

程序輸出:
4
23

數組作爲函數的參數是會退化爲函數指針(數組作爲函數參數的時候經常是需要傳遞數組的大小)
sizeof(數組): 數組佔用空間的字節數(會計算進結束符號:\0,佔據一個字節)
sizeof(指針) :機器地址的位數

4. 虛函數與函數重載

虛函數是類的成員函數,而函數重載可以是類的成員函數也可以是非成員函數:

int fun(int a);
int fun(int a, int b);

函數重載不需要是成員函數,在類外聲明或定義的函數同樣可以對其進行重載.但是虛函數必須是某個類的成員函數。

重載的調用主要根據參數個數,參數類型,參數順序來確定, 函數重載是忽略返回值的
虛函數和函數重載都實現了C++的多態性,但表現形式不一樣,函數重載調用根據參數個數、參數類型等進行區分,而虛函數則是根據動態聯編來確定調用什麼.
多態性分爲編譯時多態性和運行時多態性:
(1) 編譯時多態性通過靜態編聯完成,例如函數重載,運算符重載;
(2) 運行時多態性則是動態編聯完成,主要通過虛函數來實現;

備註:
虛函數可以在子類中進行重載,也可以不重載而沿用父類中的方法。但純虛函數必須重載,因爲在其聲明類中沒有函數實現。包含純虛函數的類爲抽象類,抽象類不能聲明對象,只能作爲基類。

5 強制類型轉換

char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = reinterpret_cast<int *>(p);
p1++;
p = reinterpret_cast<char *>(p1); 
printf("result is %s\n", p);

reinterpret_cast用來將類型A按照類型B來解釋。這樣,就可以按照B類型來處理對象,當需要再按照A類型處理時,則需要再次使用該關鍵字將對象按照A類型解釋。這樣使用不安全,但是有時候非用不可。
(1) reinterpret_cast是強制轉換但編譯器不檢查
(2) static_cast 是強制轉換編譯器在編譯時檢查(推薦的)
(3) dynamic_cast 是強制轉換編譯器在運行時檢查
功能一樣(至少在強制轉換上是一樣),但是安全性不一樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章