博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++] const与重载
阅读量:6120 次
发布时间:2019-06-21

本文共 792 字,大约阅读时间需要 2 分钟。

下面的两个函数构成重载吗?

void M(int a){} //(1)void M(const int a){} //(2)

下面的呢?

void M(int& a){} //(3)void M(const int& a){} //(4)
 
const在函数中的含义是该值在此函数范围内“无法修改”。站在调用者的角度,所有的值传递都是无法修改实参的。所以,(1)/(2)两个函数在调用者看来,是语义相同的,不能构成重载。
(4)与(3)的区别是,(4)无法修改引用指向的对象,而(3)可以。从调用者的角度,两个函数有不同的语义,构成重载。
 
demo 
#include 
using namespace std; class Y{}; /* 下面两个函数具有相同语义,即a均是值拷贝,无法改变实参。 */ void Method1(int a){} void Method1(const int a){} // error:redefinition /* 同样的语义,对象拷贝 */ void Method2(Y y){} void Method2(const Y y){} // error:redefinition /* 下面两个函数具有不同语义,即后者无法改变实参,之所以使用引用,可能是因为不想拷贝,节省内存。 */ void Method3(int& a){} void Method3(const int& a){} void Method4(Y& y){} void Method4(const Y& y){} int main(int count,char * args[]) { return 0; }

 

转载于:https://www.cnblogs.com/caca/p/cpp_const_overload.html

你可能感兴趣的文章
Mindjet MindManager 2019使用教程:
查看>>
游戏设计的基本构成要素有哪些?
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>
js中var、let、const的区别
查看>>
腾讯云加入LoRa联盟成为发起成员,加速推动物联网到智联网的进化
查看>>
从Python2到Python3:超百万行代码迁移实践
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
微软正式发布PowerShell Core 6.0
查看>>
Amazon发布新的会话管理器
查看>>