C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),-創(chuàng)新互聯(lián)

1、C++中的const

目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、碌曲網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

 (1)、C++中的const是真正的常量,可以進行數(shù)組大小的定義;

代碼如下:

#include<iostream>
using namespace std;

#define A 10

int main(void){
    int a = 10; 
    int array[a]; //Linux內(nèi)核支持這樣定義數(shù)組,其他的編譯器不支持

    const int a = 10;  //這里是常量,所以可以進行下面的數(shù)組大小的確定;
    int array[a]; //任何平臺都是對的,const編譯時,執(zhí)行;

    return 0;
}

C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),

 (2)、C++中常引用時,必定開辟了新的內(nèi)存空間;

代碼如下:

#include<iostream>
using namespace std;

int main(void){
    //int &b = 10; //普通引用,引用一個常量,常量沒有內(nèi)存地址,引用就是給內(nèi)存取多個別名;

    const int &b = 10; //C++編譯器會為其分配內(nèi)存空間;
}

C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),

 (3)、const在函數(shù)后面修飾的本質(zhì):void fun(int a) const;

 本質(zhì):void fun(const Teacher * const this, int a){},就是修飾的是*this;

2、引用的本質(zhì)

 引用的本質(zhì):引用在C++中的內(nèi)部實現(xiàn)是一個常指針;C++編譯器幫我們程序員取了一個地址;

 Type &name <===> Type * const name;

(1)、代碼如下:

#include<iostream>
using namespace std;

struct Teacher{
    char name[64];
    int age;
    int &a; //很像指針所占用的內(nèi)存空間大小;
    int &b; 
};
//普通引用占內(nèi)存空間,和指針所占空間大小是一樣的;

//引用的本質(zhì):引用在C++中的內(nèi)部實現(xiàn)是一個常指針;C++編譯器幫我們程序員取了一個地址;
//          Type &name <===> Type * const name;
int main(void){
    cout<<sizeof(Teacher)<<endl;

    return 0;
}
//一般int返回,返回的是變量的值;
//一般int &,引用返回的是變量本身;函數(shù)可放左邊/右邊;
//用引用作為返回值的話,其返回的空間不能是臨時空間;
//g2() = 100;  可以作為左值,因為引用返回的是一段連續(xù)的存儲空間,是變量;   
//函數(shù)作左值,必須返回一個引用;

(2)、運行結果:

C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),

原因:因為我用的是64位的,所以指針8字節(jié),還有字節(jié)對齊,是其中大基礎數(shù)據(jù)類型字節(jié)的整數(shù)倍,此處應該為8的整數(shù)倍;

3、C++的內(nèi)聯(lián)函數(shù)

 (1)、內(nèi)聯(lián)函數(shù)必須和函數(shù)體的實現(xiàn)寫在一塊;
 (2)、內(nèi)聯(lián)函數(shù)直接將函數(shù)體插入在函數(shù)調(diào)用的地方;
 (3)、內(nèi)聯(lián)函數(shù)速度更快,沒有壓棧,調(diào)轉(zhuǎn),返回等額外開銷;
 (4)、內(nèi)聯(lián)函數(shù)中不能有循環(huán)語句,不能存在過多的條件判斷語句;
 (5)、內(nèi)聯(lián)函數(shù)只是一種請求,C++編譯器不一定允許這種請求;

代碼如下:

#include<iostream>
using namespace std;

inline void printA(){   //內(nèi)聯(lián)函數(shù)讓C++做特殊處理;
    int a = 10; 
    cout<<"a = "<<a<<endl;
}

//內(nèi)聯(lián)函數(shù)替代宏代碼片段; inline
int main(void){
    printA();

    return 0;
}

4、C++中的默認參數(shù)

(1)、代碼如下:

#include<iostream>
using namespace std;

//沒傳參數(shù),就使用默認參數(shù);
int printfA(int a = 1){ 
    cout<<a<<endl;
}
int printfA_1(int a, int b, int c = 1){}

//C++中允許函數(shù)有默認參數(shù)
//默認參數(shù)規(guī)則:從左邊開始,如果默認參數(shù)出現(xiàn),那么接下來的(右邊)都必須是默認參數(shù);
int printA_2(int a = 1, int b = 2, int c){}

int main(void){
    printfA();

    return 0;
}

(2)、運行結果:

C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),

默認參數(shù)規(guī)則:從左邊開始,如果默認參數(shù)出現(xiàn),那么接下來的(右邊)都必須是默認參數(shù),否則報錯??!

5、占位參數(shù)和默認參數(shù)

(1)、代碼如下:

#include<iostream>
using namespace std;

//函數(shù)占位參數(shù):函數(shù)調(diào)用時,必須寫夠參數(shù);
void func1(int a, int b, int){
    cout<<"a "<<a<<" b "<<b<<endl;
    
}

//默認參數(shù)和占位參數(shù)
//目的:為以后的程序留下擴展;

void func2(int a, int b, int = 0){  //這個函數(shù)既是默認參數(shù),也是占位參數(shù);
    cout<<"a "<<a<<" b "<<b<<endl;
}

int main(void){
    //func1(1, 2); 占位參數(shù)此時必須為3個,所以錯誤;
    //func1(1, 2, 3); 對
    func2(1, 2); //占位和默認參數(shù),2/3個參數(shù)都是可以的;
    func2(1, 2, 3);//此時第3個參數(shù)沒有什么意思,不能使用;

    return 0;
}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)頁題目:C++中的const,引用本質(zhì),內(nèi)聯(lián),默認/占位參數(shù),-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article6/ddojig.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站建站公司、標簽優(yōu)化、定制網(wǎng)站品牌網(wǎng)站制作、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設