c++從入門到精通——函數重載(返回值,引用,const)

c++從入門到精通——函數重載

在同一個作用域內,可以聲明幾個功能類似的同名函數,但是這些同名函數的形式參數(指參數的個數、類型或者順序)必須不同。您不能僅通過返回類型的不同來重載函數。

實現函數重載的條件

  • 同一個作用域
  • 參數個數不同
  • 參數類型不同
  • 參數順序不同
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(double  a , int b)
{
	cout << "有參數的func(double a ,int b)" << endl;
}

void func(int a, double b)
{
	cout << "有參數的func(int a ,double b)" << endl;
}

測試

void test01()
{
	//func(1.1,3);
	func(1, 3.14);
}

結果

有參數的func(int a ,double b)

在這裏插入圖片描述
注意,返回值不作爲函數重載依據

思考:爲什麼函數返回值不作爲重載條件呢?
當編譯器能從上下文中確定唯一的函數的時,如int ret = func(),這個當然是沒有問題的。然而,我們在編寫程序過程中可以忽略他的返回值。那麼這個時候,一個函數爲
void func(int x);另一個爲int func(int x); 當我們直接調用func(10),這個時候編譯器就不確定調用那個函數。所以在c++中禁止使用返回值作爲重載的條件。

引用和const

//引用的重載版本
void func3(int &a) //引用必須要引合法的內存空間
{
	cout << " int &a" << endl;
}

void func3(const int &a)  //const也是可以作爲重載的條件  int tmp = 10; const int &a = tmp;
{
	cout << "const int &a" << endl;
}

運行

void test03()
{
	int a = 10;
	func3(a);
}

輸出int &a

void test03()
{
	func3(10);
}

輸出const int &a

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