1、C++中的const
創(chuàng)新互聯公司專注骨干網絡服務器租用十多年,服務更有保障!服務器租用,電信內江機房 成都服務器租用,成都服務器托管,骨干網絡帶寬,享受低延遲,高速訪問。靈活、實現低成本的共享或公網數據中心高速帶寬的專屬高性能服務器。
(1)、C++中的const是真正的常量,可以進行數組大小的定義;
代碼如下:
#include<iostream> using namespace std; #define A 10 int main(void){ int a = 10; int array[a]; //Linux內核支持這樣定義數組,其他的編譯器不支持 const int a = 10; //這里是常量,所以可以進行下面的數組大小的確定; int array[a]; //任何平臺都是對的,const編譯時,執(zhí)行; return 0; }
(2)、C++中常引用時,必定開辟了新的內存空間;
代碼如下:
#include<iostream> using namespace std; int main(void){ //int &b = 10; //普通引用,引用一個常量,常量沒有內存地址,引用就是給內存取多個別名; const int &b = 10; //C++編譯器會為其分配內存空間; }
(3)、const在函數后面修飾的本質:void fun(int a) const;
本質:void fun(const Teacher * const this, int a){},就是修飾的是*this;
2、引用的本質
引用的本質:引用在C++中的內部實現是一個常指針;C++編譯器幫我們程序員取了一個地址;
Type &name <===> Type * const name;
(1)、代碼如下:
#include<iostream> using namespace std; struct Teacher{ char name[64]; int age; int &a; //很像指針所占用的內存空間大小; int &b; }; //普通引用占內存空間,和指針所占空間大小是一樣的; //引用的本質:引用在C++中的內部實現是一個常指針;C++編譯器幫我們程序員取了一個地址; // Type &name <===> Type * const name; int main(void){ cout<<sizeof(Teacher)<<endl; return 0; } //一般int返回,返回的是變量的值; //一般int &,引用返回的是變量本身;函數可放左邊/右邊; //用引用作為返回值的話,其返回的空間不能是臨時空間; //g2() = 100; 可以作為左值,因為引用返回的是一段連續(xù)的存儲空間,是變量; //函數作左值,必須返回一個引用;
(2)、運行結果:
原因:因為我用的是64位的,所以指針8字節(jié),還有字節(jié)對齊,是其中最大基礎數據類型字節(jié)的整數倍,此處應該為8的整數倍;
3、C++的內聯函數
(1)、內聯函數必須和函數體的實現寫在一塊;
(2)、內聯函數直接將函數體插入在函數調用的地方;
(3)、內聯函數速度更快,沒有壓棧,調轉,返回等額外開銷;
(4)、內聯函數中不能有循環(huán)語句,不能存在過多的條件判斷語句;
(5)、內聯函數只是一種請求,C++編譯器不一定允許這種請求;
代碼如下:
#include<iostream> using namespace std; inline void printA(){ //內聯函數讓C++做特殊處理; int a = 10; cout<<"a = "<<a<<endl; } //內聯函數替代宏代碼片段; inline int main(void){ printA(); return 0; }
4、C++中的默認參數
(1)、代碼如下:
#include<iostream> using namespace std; //沒傳參數,就使用默認參數; int printfA(int a = 1){ cout<<a<<endl; } int printfA_1(int a, int b, int c = 1){} //C++中允許函數有默認參數 //默認參數規(guī)則:從左邊開始,如果默認參數出現,那么接下來的(右邊)都必須是默認參數; int printA_2(int a = 1, int b = 2, int c){} int main(void){ printfA(); return 0; }
(2)、運行結果:
默認參數規(guī)則:從左邊開始,如果默認參數出現,那么接下來的(右邊)都必須是默認參數,否則報錯??!
5、占位參數和默認參數
(1)、代碼如下:
#include<iostream> using namespace std; //函數占位參數:函數調用時,必須寫夠參數; void func1(int a, int b, int){ cout<<"a "<<a<<" b "<<b<<endl; } //默認參數和占位參數 //目的:為以后的程序留下擴展; void func2(int a, int b, int = 0){ //這個函數既是默認參數,也是占位參數; cout<<"a "<<a<<" b "<<b<<endl; } int main(void){ //func1(1, 2); 占位參數此時必須為3個,所以錯誤; //func1(1, 2, 3); 對 func2(1, 2); //占位和默認參數,2/3個參數都是可以的; func2(1, 2, 3);//此時第3個參數沒有什么意思,不能使用; return 0; }
新聞名稱:C++中的const,引用本質,內聯,默認/占位參數,
路徑分享:http://chinadenli.net/article2/gjsooc.html
成都網站建設公司_創(chuàng)新互聯,為您提供企業(yè)網站制作、自適應網站、微信小程序、動態(tài)網站、標簽優(yōu)化、用戶體驗
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯