zoukankan      html  css  js  c++  java
  • 函数重载的实现机制

       函数重载是一种特殊情况,C++允许在同一作用域中声明几个类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

      为了实现函数重载的功能,函数名就不能再作为一个函数的唯一标识,而是使用了name-mangling方法将函数名转化为了一个独一无二的程序识别代码。

    name-mangling方法生成的程序识别码含有以下信息:

    1. 字首:  Vistual C++中函数名以?开头(为了和C语言中以_或@开头区分),可以使用extern "C"在C++代码中按C语言的方式生成符号。

    2. 可选自首

    3. 合格的函数名

    4. 类型信息

    (摘自wiki)C++编译器可能进行的转化:

    int  f (void) { return 1; }
    int  f (int)  { return 0; }
    void g (void) { int i = f(), j = f(0); }

    转化为:

    int  __f_v (void) { return 1; }
    int  __f_i (int)  { return 0; } 
    void __g_v (void) { int i = __f_v(), j = __f_i(0); }

    不同编译器name-mangling实现的方式不同。

  • 相关阅读:
    mongodb 配置单实例与双实例
    redis 集群 搭建
    memcached 搭建
    公网yum 源地址
    jdk 安装
    activemq 搭建--集群
    zookeeper 安装
    activemq 安装-单点
    rabbitmq 集群
    python——网络编程
  • 原文地址:https://www.cnblogs.com/HadesBlog/p/12833257.html
Copyright © 2011-2022 走看看