/* 什麼是缺省函數?C++的類中有哪些缺省函數?*/
缺省函數是C++聲明一個類後編譯器默認生成的函數(如果未定義的話)
共有六個缺省函數
1. 缺省構造函數
2. 缺省拷貝構造函數
3. 缺省析構函數
4. 賦值運算符
5. 取地址運算符
6. 取地址運算符(const)
*空類不會生成任何缺省函數
/* 爲什麼會有缺省函數? */
正如自然界中人會有生老病死,類定義的對象也會有默認的行爲和特徵
缺省函數是用來控制對象的行爲,描述對象的特徵
/* 什麼情況下沒有缺省函數? */
/* 構造函數、析構函數的返回值? */
構造函數無返回值,實際返回所創建的對象的地址;
析構函數實際返回所析構對象的地址,用戶仍可使用這塊內存
(實際上析構函數什麼也沒做,所謂的析構是抽象的)
/* 內置變量是否有構造函數? */
/*
------------------------------------------------------------------------------------------
*/
/* 內部寄存器的作用? */
CPU中的一塊存儲區域,用於暫時存儲程序運行中的相關數據與運算結果
/* 寄存器的用法及特殊作用? */
eax 累加器(accumulator)
它是很多加法乘法指令的缺省寄存器
函數返回值時做中間層
ebx 基地址(base)寄存器
在內存尋址時存放地址
ecx 計數器(counter)
是重複(rep)的前綴指令和LOOP指令的內定計數器
edx
總是被用來放整數除法產生的餘數
eip
存放下一條運行的指令地址
esp
保存函數調用棧幀的棧頂地址
/* 哪些指令與寄存器關聯 */
/*
------------------------------------------------------------------------------------------
*/
/* extern 的用法 */
1. 修飾變量的聲明,引用外部定義的全局變量
2. 修飾函數聲明,引用其他文件函數,取代頭文件
3. 指示以C/C++編譯,實現C++與C及其他語言是混合編程
/*
------------------------------------------------------------------------------------------
*/
/* #if #ifdef #ifndef 的區別 */
#if 後面接的是表達式,如果表達式爲True,則編譯 #if 下面的代碼
#if (max == 10)
... code ...
#endif
#ifdef 後面接的是一個宏,如果定義過這個宏,則編譯下面的代碼(與邏輯true/false無關)
#ifdef MAX
... code ...
#endif
#ifndef 與 #ifdef 相反
*注意*
這幾個宏定義只是決定代碼塊是否被編譯