C++的重載 預設參數和命名空間

來源:互聯網
上載者:User

標籤: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語言不支援從重載。

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

看看結果

函數在定義時給了預設值,調用時如果傳了參數就用實參,如果沒傳就用預設值。這個作用在後面學習類的建構函式很有用。
當然預設參數也有一定的規則:調用時你只能從最後一個參數開始進行省略,換句話說,如果你要省略一個參數,你必須省略它後面所有的參數,即:帶預設值的參數必須放在參數表的最後面。 預設值必須是常量。顯然,這限制了預設參數的資料類型,例如動態數組和介面類型的預設參數值只能是 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;    }}

這樣是可以的。
以上運行結果:

注意:命名空間範圍不能以分號結束。

#專欄連結:https://blog.csdn.net/column/mycolumn.html

C++的重載 預設參數和命名空間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.