#include <iostream>
using namespace std;
class A
{
public:
//形参类型是int
int f(int i)
{
cout << "int f(int i)" << endl;
return 0;
}
//形参类型是const int
int f(const int i)
{
cout << "int f(const int i)" << endl;
return 0;
}
};
int main()
{
int i = 1;
const int ci = 2;
A a;
a.f(i);
a.f(ci);
return 0;
}
形参初始化与变量初始化一样。一般指针和引用初始化时需类型匹配。
#include <iostream>
using namespace std;
class A
{
public:
//形参类型是int *
int f1(int *i)
{
cout << "int f1(int *i)" << endl;
return 0;
}
//形参类型是int *const
int f2(int *const i)
{
cout << "int f2(int *const i)" << endl;
return 0;
}
//形参类型是int &
int f3(int &i)
{
cout << "int f3(int &i)" << endl;
return 0;
}
};
int main()
{
int i = 1;
const int ci = 2;
A a;
a.f1(&i);
a.f1(&ci); //错误,类型不匹配,形参指向int,实参指向const int
a.f2(&i);
a.f2(&ci); //错误,类型不匹配,形参指向int,实参指向const int
a.f3(i);
a.f3(ci); //错误,类型不匹配,形参引用int,实参指向const int
return 0;
}