【C++ 03】函數提高

目錄

1 函數默認參數

2 函數佔位參數

3 函數重載

3.1 函數重載概述

3.2函數重載的注意事項

1 函數默認參數

在C++中,函數的形參列表中的形參是可以有默認值的;如果沒有傳遞參數使用默認值,如果傳遞了參數,使用傳遞的值;

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

注意事項
1、如果某個位置已經有了默認參數,那麼從左到右都必須有默認值

2、如果函數的聲明有了默認參數,那麼函數實現就不能有默認參數 聲明和實現只能有一個定義形參默認值

/函數的默認參數
//語法:返回值類型 函數名(參數=默認值)
int func02(int a, int b=20, int c=30)
{
	return a + b + c;
}
//注意事項
//1、如果某個位置已經有了默認參數,那麼從左到右都必須有默認值
//2、如果函數的聲明有了默認參數,那麼函數實現就不能有默認參數 聲明和實現只能有一個定義形參默認值
int func03(int a=10, int b=10);
int func03(int a, int b)
{
	return a + b;
}
int main()
{

	//cout << "ref=" << ref << endl;
	cout << func02(10,30,20) << endl;
	cout << func03() << endl;

	system("pause");
	return 0;
}

2 函數佔位參數

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

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

//返回值類型 函數名(數據類型)
//目前階段中的佔位參數 我們還用不到,後面會介紹
//佔位參數 還可以有默認參數
void func04(int a,int = 10)
{
	cout << "this is func04 " << endl;
}
int main()
{

	//cout << "ref=" << ref << endl;
	func04(10);

	system("pause");
	return 0;
}

3 函數重載

3.1 函數重載概述

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

函數重載滿足條件:

  • 同一個作用域下
  • 函數名稱相同
  • 函數參數類型不同,或者個數不同,或者順序不同

函數返回值不可以作爲函數重載的區分條件

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

void func05(int a) {
	cout << "func diaoyong  int a" << endl;
}
void func05(double a) {
	cout << "func diaoyong  double a" << endl;
}
void func05(double a,int b) {
	cout << "func diaoyong  double a int b" << endl;
}
void func05(int a, double b) {
	cout << "func diaoyong  int a double b" << endl;
}
//函數的返回值不可以作爲函數重載的條件
int func05(int a, double b) {
	cout << "func diaoyong  int a double b" << endl;
}
int main()
{

	//cout << "ref=" << ref << endl;
	//func04(10);
	func05();
	func05(10);
	func05(3.14);
	func05(3.14,10);
	func05(10, 3.14);
	system("pause");
	return 0;
}

3.2函數重載的注意事項

引用作爲重載條件;

函數重載碰到各種函數默認參數;

函數重載時不要使用默認參數

//函數的返回值不可以作爲函數重載的條件
//函數重載的注意事項
//1、引用作爲重載的條件
void func06(int& a)
{
	cout << "func06 int &a" << endl;
}

void func06(const int& a)
{
	cout << "func06 int const &a" << endl;
}

//2、函數重載碰到默認參數
void func07(int a,int b=10)
{
	cout << "func07 int &a" << endl;
}

void func07(int a)
{
	cout << "func07 int a" << endl;
}
int main()
{
	int a = 10;
	func07(a);
	system("pause");
	return 0;
}

 

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