int add(int a,int b);
int add(const int a,const int b);
int add(int a,int b);
int add(int& a,int& b);
int add(int* a,int* b);
int add(const int* a,const int* b);
int add(int& a,int& b);
int add(const int& a,const int& b);
int add(int a,int b);
int add(int a,int b)const;
int add(int a,int b);
float add(float a,float b);
int main()
{
add(1,2);
add(3.1,4.25);//报错
add(3.1F, 4.25F);//正确
add((float)3.1,(float)4.25);//正确
}
int func(long a);
int func(float a);
int main()
{
func(3.14);//报错
}
int func(int a,int b);
int func(double a,double b);
int main()
{
func(1, 3.14); //报错
}
int func(int &s);
int func(const int &s);
int main()
{
int a = 10;
const int b = 20;
func(a); //调用int func(int &s);
func(b); //调用int func(const int &s);
}
struct myPoint
{
int row, col;
};
myPoint add(myPoint a, myPoint b)
{
myPoint tempPoint;
tempPoint.col = a.col + b.col;
tempPoint.row = a.row + b.row;
return tempPoint;
}
int add(int a, int b)
{
return a + b;
}
double add(double a, double b)
{
return a + b;
}
int main()
{
cout << add(1, 2) << endl; //3
cout << add(2.5,3.1) << endl; //5.6
return 0;
}
string read();
void print(const string&);
void print(double);
int main()
{
bool read = false;
int val = 1;
string s = read(); //错误,read函数与局部变量read冲突
void print(int); //定义一个参数为int的print函数
print("Value"); //错误,print(const string&);被隐藏
print(val); //正确,调用print(int)
print(3.14); //正确,调用print(int)
}
const_cast介绍:
功能:用来将对象的常量性移除
注意事项:
const_cast常用于有函数重载的上下文
现在我们有下面一个这样的函数,其中参数与返回值都是const类型的:
//比较两个string对象的长度,返回较短的那个引用
const string &shortString(const string &s1, const string &s2)
{
return s1.size() <= s2.size() ? s1 : s2;
}
//比较两个string对象的长度,返回较短的那个引用
const string &shortString(const string &s1, const string &s2)
{
return s1.size() <= s2.size() ? s1 : s2;
}
string &shortString(string &s1, string &s2)
{
//调用const string&类型的shortString
auto &r = shortString(const_cast<const string&>(s1),
·const_cast<const string&>(s2));
//然后将返回的结果去掉const性质
return const_cast<string&>(r);
}
int add(int a, int b,int c=10)
{
return a + b+c;
}
int main()
{
cout << add(1, 2) << endl; //13
cout << add(1,2,50) << endl; //53
return 0;
}
int a=10;
int b=20;
char c='a';
void func(int num1=a,int num2=b,char s=c);
int a=10;
int b=20;
char c='a';
void func2()
{
a=66; //改变全局变量
int b=30; //局部变量,但是不影响全局变量
func(); //调用func(66,20,'a');
}
函数的调用
int add(int a, int b,int c=10)
{
return a + b+c;
}
int add(int a, int b)
{
return a + b;
}
int main()
{
cout << add(1, 2) << endl;//报错,对函数的调用不明确
return 0;
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有