C++函数参数匹配规则
时间:2023-08-18 10:05:07来源:博客园


(资料图)

C++ 函数参数匹配1 单个参数匹配
void f(); //f1void f(int); //f2void f(int, int); //f3void f(double, double=3.14);//f4int main() {    f(5.6); //调用f4    return 0;}

candidate functions:函数名称相同(f1, f2, f3, f4 都是)。viable functions:参数个数相同(排除f1, f3),且参数可以转换成相同类型(f2, f4都是viable function)。如果不存在viable functions,则编译器报参数不匹配错误(可以通过linting检查)。 最后决定参数类型是否匹配,如果匹配优先调用,不能则选择可以隐式转换成类型相同的函数。

2 多个参数匹配
void f(); //f1void f(int); //f2void f(int, int); //f3void f(double, double=3.14);//f4int main() {    f(42, 5.6); //报错,参数模糊     return 0;}

condidate functions: f1, f2, f3, f4viable functions: f3, f4优先级: 精确匹配的参数个数越多优先级越高,参数个数相同优先级相同,如果存在多个最高优先级的函数,则报参数模糊错误。

参数类型转换

优先级:

精确匹配:包括类型相同, 数组和参数名转换为指针,忽略顶层constconst 转换 (把非const实参传给const形参)promotion数据提升,如int->long, char->unsigned等算术转换或者指针类型转换类类型(class-type)转换,如string->boolPromotion and Arithmetic Conversion
void ff(int); //f1void ff(short); //f2void manip(long); //f3void manip(float); //f4int main() {    ff("a"); //调用f1,char -> int是promotionO(比int短的数据类型统一promotion为int,              // char->short 是算术转换    manip(3.14); //error: ambiguous call,3.14视为double,double->float和doule->long在优先级上是等价的     return 0;}
const Arguments

忽略顶层const, 原因是传参的时候实际上进行的是copy过程,即copy一份实参给形参,copy会忽略顶层const

void f(int a);void f(const int a);//报错,重复定义,两者只能定义一种void f(int *a);void f(int* const a);//报错,重复定义,两者只能定义一种 
const 转换
void f(int &); //f1void f(const int &);//f2int main() {    const int a{0};    int b{0};     f(a); //调用f2(精确匹配)     f(b); //调用f1(没有定义f1时,调用f2)    return 0;}

另外,

void f(int);void f(int &);int main() {    int i = 0;    f(i); //报错,ambiguous call    return 0;}

标签:

  • 上一篇文章: 腾讯二季报点评来了!
  • 下一篇文章: 最后一页
  • 最新
  • C++函数参数匹配规则

    C++函数参数匹配 1单个参数匹配```C++voidf(); f1voidf(int); f2vo

  • 腾讯二季报点评来了!

    腾讯的二季报终于来了!不少小伙伴们期望我们出来简评几句。其实关于腾

  • 吕梁市召开优化营商环境政治监督专项检查发现问题整改推进会

    8月14日,市委副书记、市长张广勇主持召开全市优化营商环境政治监督专

  • 御姐析金:8.15黄金,原油,镑日行情分析及策略

    御姐析金815黄金原油镑日行情分析及策略全球资产定价之锚连涨四日美元

  • 你的学校是什么样子的选择一个场景说一说作文三年级(你的学校是什么样的 选择一个场景写下来)

    1、我们校园里有一棵大榕树。2、每当我们在教学楼读课文的时候,它都会

  • 香山股份董秘回复:为保证所有投资者平等获悉公司信息,根据信息披露公平原则

    香山股份(002870)08月16日在投资者关系平台上答复了投资者关心的问题。

  • 固始:抢进度 战高温 白果冲水库建设快速推进

    连日来,信阳市固始县持续高温天气。在白果冲水库项目建设施工现场,骄

  • 男子内蒙古旅游踩坑,官方通报:涉事旅行社已被停业整顿

    近日,有网友称,自己和朋友在内蒙古光明旅行社报名了五天四夜内蒙古跟

  • 茅五”遭遇北向资金连续净卖出,食品饮料行业走势堪忧!|产业链情报站

    北向资金连续6日净卖出五粮液(000858),成交净卖出达到20 14亿元,该股

  • 从“水上漂”到“岸上富” 宁德蕉城鳌江村奋力唱响乡村振兴“渔歌”

    从宁德中心城区出发,驱车不到20分钟便可以来到蕉城区漳湾镇鳌江村。只

  • 和田玉白玉材料

    和田玉是一种非常古老的玉石,其中的白玉属于稀有品种。主要的和田玉白

  • 东亚机械:8月11日融资净买入38.31万元,连续3日累计净买入115.34万元

    8月11日,东亚机械(301028)融资买入114 2万元,融资偿还75 9万元,融

  • “训练有素”的工程细菌可发现体内癌症

    据10日发表在《科学》杂志上的论文,美国和澳大利亚的团队设计出了可检

  • 1.57亿!詹姆斯暴涨!NBA这么安排,针对湖人呐

    不得不承认,足球确实是第一的球类运动,受众面比篮球要广。湖人新赛季

  • 报销单的正确填写模板(报销单)

    来为大家解答以上问题,报销单的正确填写模板,报销单很多人还不知道,

  • 江苏无锡:“植”此青绿,铺绘“生态绿城”新画卷

    天远桥湿地公园把十里明珠堤与梅梁路交叉口的7公顷空地变成一幅融合自

  • 旅游
    • 公元股份:公司管道产品主要应用于市政管网、工业管网、建筑工程、消防保护、电力通讯等八大领域

    • 手机炒股流量消耗大吗?手机炒股流量需要多少?|环球看点

    • 创业板综指是什么意思?创业板指数和和创业板综指有什么区别?_世界播资讯

    • 全球热讯:变速器的作用是什么?传动系统的作用是什么?