因爲之前已經看過關於C++中sizeof的相關知識,並且寫了總結文章,在做習題測試的時候,基本也都正確,所以這裏主要是記錄define、const的一些知識點。
一、define
1、define一個常量
#define A 1
#define PTR int*
PTR a,b;//由於define是不含任何意義的替換,所以這裏僅僅是字符串替換,等價於int *a,b,因而a爲int類型的指針,b爲int類型的變量
2、define一個函數
#define ADD(a,b) a+b
int i=1,j=2,k=3;
int s=ADD(i,j)*k;//等價於s=1+2*3,而不是(1+2)*3,所以在使用時,注意加括號
二、const
如果const位於星號的左側,則const就是用來修飾指針所指向的變量,即指針指向爲常量;如果const位於星號的右側,const就是修飾指針本身,即指針本身爲常量
int b=500;
const int *a=&b;//指針指向的值爲常量
int const *a=&b;//指針指向的值爲常量
int *const a=&b;//指針爲常量
const int *const a=&b;//指針指向的值和指針均爲常量
如果類中的常函數,想要修改類中的成員變量,則需要將該成員變量用mutable修飾
三、inline
內聯函數和普通函數相比可以加快代碼運行的速度,因爲不需要中斷調用,在編譯的時候內聯函數可以直接被嵌套到目標代碼中。而宏只是一個簡單的替換。
inline是指嵌入代碼,就是在調用函數的地方不是跳轉,而是把代碼直接寫到那裏去。對於短小的代碼來說inline增加空間消耗換來的是效率提高,這方面和宏是一樣的,但是inline在和宏相比沒有付出任何額外代價的情況下更安全。
inline一般用於如下情況:
1)一個函數不斷被重複調用
2)函數只有簡單的幾行,且函數內不包含for、while、switch語句