真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++的重載缺省參數(shù)和命名空間

參加了幾次筆試,發(fā)現(xiàn)有很多c++方面的問題被卡了。從現(xiàn)在開始進(jìn)攻c++。之后會(huì)陸續(xù)更新c++學(xué)習(xí)筆記。
先說說我學(xué)習(xí)的書籍,大家如果有好的書籍推薦,感謝留言。
C++的重載 缺省參數(shù)和命名空間
暫時(shí)是在看這些書自學(xué)。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的南漳網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

#1.C++介紹。

c++介紹

C幾乎是C++的一個(gè)子集,所以C語言支持的語法在C++基本都支持并需要使用。C plus plus(C++),所以在C的基礎(chǔ)上又有了很多新的特性。

#2.為什么C++支持重載?C語言不支持--重點(diǎn)
先說說什么是重載:C++ 允許多個(gè)函數(shù)擁有相同的名字,只要它們的參數(shù)列表不同就可以,這就是函數(shù)的重載(Function Overloading)。借助重載,一個(gè)函數(shù)名可以有多種用途。
舉個(gè)例子


void Func( )
{
    int x = 0, y = 0;
    x = x + y;
}
void Func(int x, int y)
{
    int sum = x + y;
}

int main( )
{
    Func( );
    Func(4,5);
    return 0;
}

這就是函數(shù)重載。重載支持函數(shù)的參數(shù)列表不同。參數(shù)列表是指參數(shù)的類型和參數(shù)的個(gè)數(shù)。
參數(shù)的類型有點(diǎn)不好理解。舉個(gè)例子。

func(int x,int y);
func(int x,char y);
func(char x,int y);

上面三個(gè)函數(shù)相互構(gòu)成重載。所以參數(shù)類型指的是兩個(gè)函數(shù)的得參數(shù)對(duì)應(yīng)位置的類型。
再來說說為什么C語言不支持重載,而c++支持
這個(gè)不許深入到底層去探個(gè)究竟,這里我們要看底層匯編代碼(我們?cè)趌inux平臺(tái)下查看匯編代碼,分別采用gcc和g++編譯)gcc一遍自帶,g++需要自己安裝,安裝只需輸入:
yum install gcc gcc-c++

下面是執(zhí)行過程:
C++的重載 缺省參數(shù)和命名空間
從圖中可以看出,C語言和c++在底層的函數(shù)解析規(guī)則不同,導(dǎo)致C語言不支持從重載。

#3.缺省參數(shù)
定義:就是在聲明函數(shù)的某個(gè)參數(shù)的時(shí)候?yàn)橹付ㄒ粋€(gè)默認(rèn)值,在調(diào)用該函數(shù)的時(shí)候如果采用該默認(rèn)值,你就無須指定該參數(shù)。
看個(gè)栗子:

int Add1(int a, int b)
{
    return a + b;
}

int Add2(int a, int b = 1)
{
    return a + b;
}

int main( )
{
    printf("%d\n",Add1(1, 2));
    printf("%d\n", Add2(1));
    printf("%d\n", Add2(1,2));
    system("pause");
    return 0;
}

看看結(jié)果
C++的重載 缺省參數(shù)和命名空間
函數(shù)在定義時(shí)給了默認(rèn)值,調(diào)用時(shí)如果傳了參數(shù)就用實(shí)參,如果沒傳就用默認(rèn)值。這個(gè)作用在后面學(xué)習(xí)類的構(gòu)造函數(shù)很有用。
當(dāng)然缺省參數(shù)也有一定的規(guī)則:調(diào)用時(shí)你只能從最后一個(gè)參數(shù)開始進(jìn)行省略,換句話說,如果你要省略一個(gè)參數(shù),你必須省略它后面所有的參數(shù),即:帶缺省值的參數(shù)必須放在參數(shù)表的最后面。 缺省值必須是常量。顯然,這限制了缺省參數(shù)的數(shù)據(jù)類型,例如動(dòng)態(tài)數(shù)組和界面類型的缺省參數(shù)值只能是 nil;至于記錄類型,則根本不能用作缺省參數(shù)。 缺省參數(shù)必須通過值參或常參傳遞。

#4.命名空間

以關(guān)鍵字namespace開始,其后接命名空間的名字:

namespace myname1
{
    int a = 1;
}

namespace myname2
{
    int a = 5;
}

命名空間的名字在其所在作用域中是唯一的,命名控件可以在全局作用域或者其它作用域內(nèi)部定義,但是不能在函數(shù)或者類的內(nèi)部定義。
?每個(gè)命名空間都是一個(gè)作用域:
這就不會(huì)出現(xiàn)C語言中的命名沖突問題。像上面的代碼有兩個(gè)變量a,但是不會(huì)出現(xiàn)命名沖突。
?從命名空間外部使用命名空間成員:
myname1::a;
當(dāng)我們使用該變量時(shí)要加上作用域限定符。
?命名空間可以嵌套定義:

namespace myname2
{
    int a = 5;
    namespace myname3
    {
    int a = 10;
    }
}

這樣是可以的。
以上運(yùn)行結(jié)果:
C++的重載 缺省參數(shù)和命名空間

注意:命名空間作用域不能以分號(hào)結(jié)束。

#專欄鏈接:https://blog.csdn.net/column/mycolumn.html


本文名稱:C++的重載缺省參數(shù)和命名空間
本文鏈接:http://weahome.cn/article/gdhsei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部