美文网首页
C++之函数重载(下)

C++之函数重载(下)

作者: 程序手艺人 | 来源:发表于2018-04-09 08:40 被阅读16次

重载与指针

图1
  • 函数重载遇上函数指针
    • 将重载函数名赋值给函数指针时
    1. 根据重载规则挑选与函数指针参数列表一致的侯选者
    2. 严格匹配候选者的函数类型与函数指针的函数类型

注意

  • 函数重载必然发生在同一个作用域中
  • 编译器需要用参数列表或函数类型进行函数选择
  • 无法直接通过函数名得到 重载函数的入口地址

C++和C相互调用

  • 实际工程中C++和C代码相互调用是不可避免的
  • C++编译器能够兼容C语言的编译方式
  • C++编译器会优先使用C++编译的方式
  • extern 关键字强制让C++编译器进行C方式的编译
extern "C"
{
    // do C-style compilation here 
}
  • 问题

如何保证一段C代码只会以C的方式被编译?

图2
  • 注意事项
  • C++编译器不能以C的方式编译重载函数
  • 编译方式决定函数名被编译后的目标名
    • C++编译方式将函数名和参数列表编译成目标名
    • C编译方式只将函数名作为目标名进行编译

小结

  • 函数重载是C++对C的一个重要升级
  • 函数重载通过函数参数列表区分不同的同名函数
  • extern 关键字能够实现C和C++的相互调用
  • 编译方式决定符号表中函数名的最终目标名

相关文章

  • C++基础语法-重载、extern

    函数重载 今天我们来深入学习下C++的基础语法函数重载。函数重载定义:只要函数名相同,参数个数不同,参数类型不同,...

  • C++之函数重载(下)

    重载与指针 函数重载遇上函数指针将重载函数名赋值给函数指针时根据重载规则挑选与函数指针参数列表一致的侯选者严格匹配...

  • 2.C++对C的扩展

    重载(overload) C++中,引用了函数重载的概念,函数名同名,参数列表不同形成重载。重载规则: 函数名相同...

  • Vue3源码中的TypeScript重载函数的作用

    TypeScript重载函数的作用案例 C++中的一个概念(百度百科): 函数重载一般指重载函数。 重载函数是函数...

  • 30小时快速精通C++拾遗

    C语言不支持重载,为什么C++支持重载? C语言不支持函数重载,编译时函数名加上_或者其他标识C++为什么能够重载...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • Callback / Callable 类型

    重载函数,和php的伪重载函数 重载函数a. c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的...

  • C++ 重载 [] = == !=

    一 重载 [] = == != 1.1 重载[] C++ 规定,下标运算符[ ]必须以成员函数的形式进行重载。该重...

  • c++之重载函数

    函数重载:1.函数名相同2.函数参数个数不同,参数顺序不同,参数类型不同 注意:1.函数重载与返回值类型无关。2....

网友评论

      本文标题:C++之函数重载(下)

      本文链接:https://www.haomeiwen.com/subject/pdlbhftx.html