普通函數和類成員函數const重載

函數參數的const重載只能重載引用型的,因爲非引用的const和普通的非const參數一樣。

成員函數用const重載總共有三種方式,有三個地方可以寫const,要注意const在不同的地方的意義。

#include<iostream>
#include<vector>
#include<string>
using namespace std;

void fun(const int& i)//fun(10)這能用這個函數
{
	cout<<"const int"<<endl;
}

void fun(int& i)
{
	cout<<"int"<<endl;
}
/*//下面兩個只能定義一個,不能重載
void fun(const int i)//所有
{
	cout<<"const int"<<endl;
}

void fun(int i)
{
	cout<<"int"<<endl;
}
*/

class A
{
public:
	//類內部關於const的三種重載方式
	const string &fun(const string &s1) const//只在對象是常對象時調用
	{
		cout<<"321"<<endl;
		return s1;
	}
	const string &fun(const string &s1)//對象不是常對象且傳入參數是const時調用
	{
		cout<<"123"<<endl;
		return s1;
	}
	string &fun(string &s1)//對象不是常對象且傳入參數不是const時調用
	{
		cout<<"213"<<endl;
		return s1;
	}
};

int main()
{	
	int i=10;
	const int b=20;
	fun(10);
	fun(b);

	A a,d;
	const A c;
	a.fun("1");
	c.fun("3");
	string s1("123");
	d.fun(s1);
	d.fun(string("123"));//調用時候輸出“123”不知道爲啥

	system("pause");
	return 0;
}


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