C++函數提高

C++函數提高

1.函數的默認參數

在C++中,函數的形參列表中的形參是可以有默認值的。

語法:返回值類型 函數名 (參數 = 默認值){}

#include<iostream>
using namespace std;

/*
函數的默認參數
如果我們自己傳入數據,就用自己的數據,如果沒有,那麼用默認值。
語法:返回值類型 函數名 (形參 = 默認值){}
注意事項:1.如果某個位置已經有了默認值,那麼從這個位置往後,從左到右都必須有默認值
          2.如果函數聲明有默認參數,函數實現就不能有默認參數
*/
int func1(int a, int b = 20, int c = 10)
{
	return a + b + c;
}

/*
1.如果某個位置已經有了默認值,那麼從這個位置往後,從左到右都必須有默認值
int func2(int a, int b = 20, int c ) //默認實參不在形參列表結尾
{
	return a + b + c;
}
*/

/*2.如果函數聲明有默認參數,函數實現就不能有默認參數
    聲明和實現都只能有一個默認參數
int func3(int a = 10, int b = 20);
int func3(int a, int b )
{
	return a + b ;
}
*/

int main()
{
	cout << func1(10, 30) << endl;
	system("pause");
	return 0;
}

2.函數的佔位參數

C++中函數的形參列表裏可以有佔位參數,用來做佔位,調用函數時必須填補該位置

語法:返回值類型  函數名(數據類型){ }

/*佔位參數*/
//返回值類型 函數名 (數據類型){ }
//佔位參數,還可以有默認參數
void func(int a,int)
{
	cout << "this is funs" << endl;
}

int main()
{
	func(10,10);
	system("pause");
	return 0;
}

3.函數重載(基本語法)

作用:函數名可以相同,提高複用性

函數重載滿足條件

1.同一個作用域下

2.函數名稱相同

3.函數參數類型不同 或者 個數不同 或者 順序不同

#include<iostream>
using namespace std;

/*函數重載*/
//可以讓函數名相同,提高複用性
/*
函數重載滿足條件:
1.同一個作用域下
2.函數名稱相同
3.函數參數類型不同 或者 個數不同 或者 順序不同
*/
void func()
{
	cout << "func 的調用" << endl;
}

void func(int a)
{
	cout << "func(int a) 的調用" << endl;
}

void func(double a)
{
	cout << "func(double a) 的調用" << endl;
}


void func(int a,double b)
{
	cout << "func(int a,double b) 的調用" << endl;
}

void func(double a, int b)
{
	cout << "func(double a, int b) 的調用" << endl;
}

int main()
{
	func();
	func(10);
	func(3.13);
	func(2,3.13);
	func(2.23 , 3);
	system("pause");
	return 0;
}

4.函數重載(注意事項)

引用作爲重載條件

函數重載碰到函數默認參數

#include<iostream>
using namespace std;

/*
函數重載注意事項:
1.引用作爲重載的條件
*/
void func(int &a)  //int &a = 10;不合法
{
	cout << "func(int &a) 的調用" << endl;
}

void func(const int& a) //const int &a =10; 合法
{
	cout << "func(const int &a) 的調用" << endl;
}

//2.函數重載碰到默認參數
void func2(int a, int b =10)
{
	cout << "func2(int a, int b)的調用" << endl;
}

void func2(int a)
{
	cout << "func2(int a)的調用" << endl;
}

int main()
{
//	int a = 10;
//	func(a);

//	func(10);
	func2(13); //當函數重載碰到默認參數,會出現二義性,報錯,儘量避免出現此類情況
	system("pause");
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章