91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++的重載 缺省參數和命名空間

發布時間:2020-07-25 16:55:25 來源:網絡 閱讀:853 作者:龍躍十二 欄目:編程語言

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

#1.C++介紹。

c++介紹

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

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


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;
}

這就是函數重載。重載支持函數的參數列表不同。參數列表是指參數的類型和參數的個數。
參數的類型有點不好理解。舉個例子。

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

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

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

#3.缺省參數
定義:就是在聲明函數的某個參數的時候為之指定一個默認值,在調用該函數的時候如果采用該默認值,你就無須指定該參數。
看個栗子:

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;
}

看看結果
C++的重載 缺省參數和命名空間
函數在定義時給了默認值,調用時如果傳了參數就用實參,如果沒傳就用默認值。這個作用在后面學習類的構造函數很有用。
當然缺省參數也有一定的規則:調用時你只能從最后一個參數開始進行省略,換句話說,如果你要省略一個參數,你必須省略它后面所有的參數,即:帶缺省值的參數必須放在參數表的最后面。 缺省值必須是常量。顯然,這限制了缺省參數的數據類型,例如動態數組和界面類型的缺省參數值只能是 nil;至于記錄類型,則根本不能用作缺省參數。 缺省參數必須通過值參或常參傳遞。

#4.命名空間

以關鍵字namespace開始,其后接命名空間的名字:

namespace myname1
{
    int a = 1;
}

namespace myname2
{
    int a = 5;
}

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

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

這樣是可以的。
以上運行結果:
C++的重載 缺省參數和命名空間

注意:命名空間作用域不能以分號結束。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉南县| 大足县| 红安县| 财经| 仁布县| 泽普县| 黑水县| 新竹县| 天等县| 维西| 永平县| 新干县| 温泉县| 仁寿县| 绥芬河市| 临洮县| 东港市| 泰和县| 惠州市| 喀什市| 星座| 栾城县| 商河县| 榆社县| 沁源县| 遵化市| 洪雅县| 郧西县| 金湖县| 含山县| 固安县| 独山县| 孟州市| 阳泉市| 宣威市| 胶州市| 策勒县| 青阳县| 金阳县| 津南区| 小金县|