函数的重载和重复声明的区别

 函数的重载和重复声明的区别:
void a(const int a)
{
  cout<<"const"<<endl;
}

void a(int a)
{
cout<<"no const"<<endl;

}

 

 

这样是重复声明,因为复制形参时并不考虑形参是否为const,函数操作的只是副本。函数无法修改实参。结果,既可以将
const对象传给const形参,也可以传给非const形参,两种形参并无本质区别。

 

 

void a(const int& a)
{
  cout<<"const"<<endl;
 
}

void a(int& a)
{
cout<<"no const"<<endl;

}

 

 

这样是函数重载,因为函数void a(int& a)不能传递const int&类型的参数,只能传递int&类型的参数,而void a(const int& a)即可以传递const int&类型的参数也可以传递int& 类型的参数。这么看来好像只定义void a(const int& a)就够了,但是其实void a(int& a)函数还是能完成void a(const int& a)所不能完成的任务的:当int& 类型传进void a(const int& a)函数体内时,int& 的值就不能修改了,尽管它是const类型的,而void  a(int& a)函数就允许在函数体内修改值。所以这两个函数还是不一样。类似的。如果函数带有指向const类型的指针的形参则与带有指向相同类型的非const对象的指针形参的函数是不同的。

 

结论:仅当形参是引用或指针时,形参是否为const才有影响

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值