博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于const的重载
阅读量:7109 次
发布时间:2019-06-28

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

hot3.png

C++不允许依靠顶层const的区别来定义重载函数,例如下面的做法将造成重复声明,原因是调用时形参为const int的函数可以接受int的实参(经过隐式类型转换)

void print(int)void print(const int) //重复声明,无法与void print(int)区分void print(int*)void print(int*const) //重复声明,无法与void print(int*const)区分

但C++允许通过区分成员函数是否是const对其进行重载,例如下面的做法并没有问题:

class Screen {public:    //两个不同的函数,没有重复声明    void print() const;    void print();}

这段代码不会产生问题的原因是,实际上这里的const包含了底层的const,而不仅仅是顶层的const(即同时包含底层const和顶层const)。下面这段伪代码更形象地说明了不会产生重复声明问题的原因:

std::string Person::getName() const;//上面这一句相当于声明://std::string Person::getName(const Person* const);//(注意:实际上C++没有这种形式的声明,但便于理解,可以理解成这种形式的声明)

转载于:https://my.oschina.net/JiamingMai/blog/483431

你可能感兴趣的文章
自己定义控件----倒计时控件
查看>>
ubuntu16.04与mysql的运维注意事项
查看>>
我眼中的ASP.NET Core之微服务 (二)
查看>>
Java 集合并交补
查看>>
MySql和Sql的单行注释和多行注释的区别
查看>>
Cannot create __weak reference in file using manual reference counting
查看>>
(zhuan) Variational Autoencoder: Intuition and Implementation
查看>>
PHI 数据库简介
查看>>
王立平-- Swift
查看>>
POJ1125 Stockbroker Grapevine 多源最短路
查看>>
HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
查看>>
为影像数据去除无效值
查看>>
Android Support Library 23.2介绍(翻译自官方文档)
查看>>
easyui datagrid自定义按钮列,即最后面的操作列(转)
查看>>
Java的JDBC事务详解
查看>>
决策树1 -- ID3_C4.5算法
查看>>
【转载】K-NN算法 学习总结
查看>>
LeetCode - 445. Add Two Numbers II
查看>>
chrome jsonView插件安装
查看>>
【管用】 使用VMtools实现主机Windows与虚拟机Linux文件共享
查看>>