我是靠谱客的博主 简单小虾米,这篇文章主要介绍C++Primer(第五版)学习笔记——函数重载和函数匹配(第六章),现在分享给大家,希望可以做个参考。

重载函数其实就是为了方便记忆那些实现方法、作用类似的一类函数。

重载函数必须在形参类型或者数量上有所不同。

重载和const形参:

一个拥有顶层const的形参无法和另一个么有顶层const的形参区别开来(因为既可以用常量初始化一个const形参,也可以用 非常量初始化一个const形参。)、

cast_const和重载:(这里没太看懂)

书中给了个例子:

定义了一个形参是常量引用,返回值也是常量引用的函数。

此时,我们可以用非常量实参调用这个函数,但是返回值依然是一个常量。

我们要是想要返回一个非常量,就需要用到cast_const:

定义一个形参不是常量,返回值也不是常量的函数,在函数体内,转换两个形参为const来调用常量版本的函数,得到一个常量的结果,然后在把此结果转换为非常量返回,此时因为我们是将一个非常量转换为常量,再转换为常量,结果是安全的。

讲真,这里不知道有什么用,看的迷迷糊糊的。直接在函数体里写实现过程不就行了,为什么要转来转去的?(大概是为了方便改动?)

代码:

常量版本:

复制代码
1
2
3
4
const string &shorterString(const string&s1 , cosnt string s2) { return s1.size() <= s2.size() ?s1:s2; }

非常量版本:

复制代码
1
2
3
4
5
string &shorterString(string &s1,string &s2) { auto &r = shorterString(const_cast<const string&>(s1),const_cast<const string&>(s2)); return const_cast<string&>(r); }
函数匹配:

三步:

1.确定候选函数:与被调用函数同名,声明在调用点可见

2.确定可行函数:形参数量相同、与形参类型相同或者能转换成形参类型

3.寻找最佳匹配.

类型转换评级:

1. 实参类型和形参类型相同。

    实参从数组类型或函数类型转换成对应的指针类型

    向实参添加顶层const或者从实参中删除顶层const

2通过const实现转换匹配(非常量实参传给常量形参)

3通过类型提升实现的匹配(小整型转换成int类型)

4通过算术转换实现的匹配(所有算术类型转换的级别都一样)

5通过类类型转换实现的匹配



最后

以上就是简单小虾米最近收集整理的关于C++Primer(第五版)学习笔记——函数重载和函数匹配(第六章)的全部内容,更多相关C++Primer(第五版)学习笔记——函数重载和函数匹配(第六章)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部