一:c++函式預設引數
注意一下幾點就可以
1:預設引數的指定在函式的宣告,並不是在定義
2:必須從右到左新增預設引數,即要為某個引數設定預設值,則必須為它
右邊的所有引數提供預設值
**:
/*預設函式引數*/
#includeusing std::cin;
using std::cout;
using std::endl;
int max(int a, int b = 0); //函式宣告的時候指定預設值
/*假設這個函式有三個引數, max(int a, int b = 0, int c);
這樣的宣告肯定是不行的,沒有遵守第二點
*/ int main()
int max(int a, int b)
二:函式過載,乙個多型的概念
過載也應注意幾點
1:函式過載的關鍵是函式的引數列表,也稱為函式特徵標
2:返回值不同並不構成過載
3:編譯器在檢查函式特徵標時,把型別引用和型別本身視為同一特徵標
4:在進行對有函式過載的時候,注意二義性的發生,後面的**會有說明
**:
/*函式過載*/
#includeusing std::cin;
using std::cout;
using std::endl;
/*int max(int a, int b);
double max(int a, int b);
如果這樣定義這兩個函式,並不會構成過載, 程式會報重複定義的錯誤
*//*
int max(char bits);
int max(char &bits);
並不構成過載
*//*
print(long a, int b);
print(double a, int b);
如果你在主函式想下面這樣呼叫 ,就會報二義性錯誤
int year; print(year, 6) ;
編譯器分不出該呼叫哪個函式
*/ int max(int a, int b);
double max(double a, double b);
int main()
int max(int a, int b)
double max(double a, double b)
三:函式模板
函式的模板提高了**的可重用性,這個特性很好,也挺複雜的
**:乙個簡單的例子
#includeusing std::cin;
using std::cout;
using std::endl;
templateint swap(t &a, t &b);
int main()
templateint swap(t &a, t & b)
函式模板還有乙個特性,可以顯式具體化,在某種場合可以使用
**:
/*
模板還有乙個特性就是可以顯式具體化
對於乙個結構體,我們可以為它寫個交換的模板,但是我們只是想
交換結構體中某些成員的值時,顯式具體化就體現出其好處
具體的可以看**
*/#include#include#includeusing std::cin;
using std::cout;
using std::endl;
struct people
; template int swap(t &a, t &b); //fuction prototype
template<>int swap(people &p1, people &p2);
//顯式具體化對於同乙個型別, 優先性高於普通函式的模板
//程式的結果也證明了這一點
void show(people a)
int main()
; people a2 = ;
swap(a1, a2);
show(a1); show(a2);
return 0;
}templateint swap(t &a, t &b)
template<> int swap(people &p1, people &p2)
模板函式還有乙個特性:顯式例項化,有興趣的同學可以研究一下
感覺用的不多
過載引用引數 函式模板
void sink double r1 matches modifiable lvalue void sank const double r2 matches modifiable or const lvalue,rvalue void sunk double r3 matches rvalue 左...
C 筆記函式過載函式模板
include using namespace std class student void display 定義公用函式display 在函式的後面加上不加 結果都是一樣的一句話的結束符號 不影響函式的執行在c 中也允許函式的過載,即函式的一物多。include include using nam...
C 函式過載和函式模板
過載 不同的東西在不同場合有不同的含義,一物多用 例如 和 可以是移位運算子,在c 也是輸入輸出運算子 cout 和cin 函式過載 同名函式實現不同功能。函式過載實現方式 引數型別和引數個數至少乙個不同即可。優點 函式過載將相同或類似功能的函式用乙個函式名,但仍然要定義每個函式,於是函式模板派上用...