1. 命名空間
C++中的命名空間(namespace)是用來避免命名沖突問題的一種機制。通過將類、函數、變量等封裝在命名空間中,可以避免不同部分的代碼中出現相同名稱的沖突。在C++中,可以使用namespace
關鍵字來定義命名空間。
然后我們在調用的時候可以這樣:
std::cout<<"啊吧怪不啊吧"<<endl;
就是在我們使用的每一行只要使用了關于std這個命名空間里面的東西,那么就在前面加上這個,即(命名空間名字)加上::來表示。當然,我相信很多人都會覺得繁瑣,我們也可以在主函數外直接將命名空間展開,PS:一般來說我們自己寫的小型代碼可以直接展開,但是在一些大型的項目里面聽說是不允許直接展開大型的命名空間,因為這會使項目代碼運行速度過慢,因為要去里面一遍遍的重復查找那些函數,變量之類的。同時會造成命名空間沖突,使代碼無法正常運行。
1.1?命名空間定義
?
namespace struggle
{int a=10;class hash{........};
}?
現在我們創建了一個命名空間,然后在里面有一int類型的變量a,他的大小為10。然后我們可以調用他,當然,如果我們在main函數上面已經展開了這個名為struggle的命名空間,那么我們就不可以重復定義一個變量叫a,并且給他賦值為5,3,7,之類的了。
1.2?命名空間的使用
?
?
using namespace struggle;int main()
{int b=a;hash<int,int> myhash;............return 0;
}??
我們來看,在這張圖里面,首先在main的上方展開了這個名為struggle的命名空間,然后我們便可以直接在main里面使用a這個變量和hash這個類。
2. 輸入與輸出
在C++中,輸入與輸出分別是cin與cout,然后通過>>與<<來間隔。比如說cin>>a和cout<<a;因為有人說像水一樣流入與流出,所以他們也被稱為流輸入與流輸出。
PS:使用他們時必須包含<iostream>以及按命名空間使用方法使用std.
3.?缺省參數
3.1?缺省參數概念
缺省參數是指在函數或方法的定義中設置了默認值的參數,當調用該函數或方法時如果沒有傳入對應參數的值,則會使用默認值。這樣設計可以簡化函數調用時的語法,提高代碼的靈活性和可讀性。在一些編程語言中,缺省參數也被稱為默認參數。
?void func(int a=1)
{cout<<a<<endl;
}int main()
{ func();func(10);return 0;
}?
這個代碼的輸出結果是先輸出一個1,再輸出一個10。因為在這個代碼里面程序會先判斷你有沒有給值,如果沒有的話就會使用這個缺省參數,反之則不使用這個缺省參數。
3.2 缺省參數分類
缺省參數分為全缺省參數和半缺省參數。其實也很好理解,就是在函數體里面的每一個參數都有缺省值,那就是全缺省參數
?
?
void func(int a=1,int b=1)
{cout<<a<<b<<endl;
}int main()
{ func(10,10);return 0;
}??
如該圖中的func就是全缺省參數。
如果在函數體里面不是每一個參數都有缺省值,那就是半缺省參數
?void func(int a=1,int b)
{cout<<a<<b<<endl;
}int main()
{ func(10,10);return 0;
}
如該圖中的func就是半缺省參數,因為里面的b并沒有缺省值。
注意:如果說一個函數有兩個缺省值,那你傳過去的參數也不可以低于兩個。
4. 函數重載
函數重載(Function Overloading)是指在C++中允許定義多個同名函數,這些同名函數具有不同的參數列表或參數類型。在調用這些同名函數時,編譯器會根據參數的數量或類型來確定調用哪個函數。
?void print(int num) {cout << "Printing an integer: " << num << endl;
}void print(double num) {cout << "Printing a double: " << num << endl;
}int main() {print(10);print(3.14);return 0;
}?
在上面的示例中,定義了兩個名為print
的函數,一個接受int
類型的參數,另一個接受double
類型的參數。在main
函數中分別調用這兩個函數,根據參數類型的不同,編譯器會自動選擇調用對應的函數。
函數重載可以使代碼更加靈活,但需要注意避免出現歧義性的情況,以確保編譯器可以正確選擇需要調用的函數。