函數參數的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;
}