const 与过载
1、方法包括方法名,返回类型,形参表,修饰符。
2、对于一个方法,const可以出现的地方有返回类型,形参表,和方法后(const成员方法)。
3、返回类型的常量性(是否为const)不同,不能构成过载。为什么?
过载是编译时多态,也就是说,在编译的时候,已经确定下来调用哪个方法。对于又返回类型的方法,调用的时候,可能不处理返回值,这样的话,编译器就不知道该调用哪个方法了。
4、我们知道,形参表不同可以构成过载。如果形参表相同,只是形参的常量性不同,能否构成过载?
形参为引用或者指针,可以构成过载,否则不能构成过载。为什么?
过载是编译时多态,必须在编译时确定调用哪个方法。
如果形参为引用或者指针,调用方法的时候形参就是实参对象本身,根据实参是否为const可以确定调用哪个方法。
如果形参不是引用或者指针,调用方法的时候会进行copy构造(对应的是copy赋值),与实参没有了关系,编译器不知道该调用哪个方法。
5、方法后,是否为const成员方法,可以构成过载。为什么?
这个时候可以根据方法绑定的对象,是否为const,精确匹配,确定调用哪个方法。
注意:对于const成员方法,当前没有过载的非const成员方法,const成员方法会把绑定的对象强制转化为const对象。
主调方法,被调方法,方法的绑定对象(方法的拥有者)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理