20140808 const和define區別 內聯函數(inline) 棧和堆的地址分配 棧幀

一、const和define區別數組

const有數據類型(不能改變的變量),define只是簡單的字符串替換,沒有數據類型。安全

C++程序用const徹底取代 define。函數

const還能夠類成員函數爲不能改變成員變量的恆態函數。(mutable int a除外).net

例子:3d

const int buffsize=10;對象

int buf[buffsize];blog

在C編譯器中編譯出錯,由於繼承

二、string類的使用字符串

string string[3]={「aa」,「bb」,「cc」};//定義了一個包含三個string對象的數組。get

三、內聯函數(inline)

inline是指嵌入代碼,在調用內聯函數的地方直接嵌入代碼,不須要中斷調用,因此速度更快。和C中的#define相比,有類型檢查,更加可靠安全。

何時使用:

一個函數不斷被重複調用,函數的代碼量少。如swap函數

inline void swap(int a,int b){a=a^b;b=a^b;a=a^b;}

四、棧和堆的地址分配

int a=1;
int *p=&a;
int &Ra=a;
cout<<&a」<<&a<<endl;
cout<<&p<<endl;
cout<<&Ra<<endl;

按變量定義的順序,在棧上的地址分配的由高地址向低地址分配

image

五、虛繼承

2f738bd4b31c8701e5684ad2257f9e2f0708ff2c

六、函數調用也叫作過程,須要理解棧幀

http://blog.csdn.net/yxysdcl/article/details/5569351(棧幀講得很是好)

相關文章
相關標籤/搜索