温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中函数重载定义与原因是什么

发布时间:2022-03-07 11:53:16 来源:亿速云 阅读:147 作者:小新 栏目:开发技术

小编给大家分享一下C++中函数重载定义与原因是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    引例

    如果要求你只能通过print函数,即能打印字符串,又能打印一个整型。

    虽然在C语言中我们可以通过 print_i 和print_s来实现功能。

    但是C++更方便。C++支持同一函数名,完成类似的功能的语法。

    void print(int i)
    {
        cout << "print a integer :" << i << endl;
    }
    
    void print(string str)
    {
        cout << "print a string :" << str << endl;
    }
    
    int main()
    {
        print(12);
        print("hello world!");
        return 0;
    }

    函数重载的定义

    函数重载是指在同一作用域内(可以浅显理解为同一文件内,毕竟函数具有外联系),可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处.

    函数重载规则

    函数重载的条件:参数个数 或 类型 或 顺序必须不同,函数名不看

    C++中函数重载定义与原因是什么

    为什么C不支持函数重载而C++可以

    要想达到函数重载必然解决:函数命名问题 &mdash;编译器只需要将用户定义的各种标识符,再加载内存中,对其进行修饰即----内部名称

    因为如果不解决函数命名问题,在编译时,就无法形成符号表,同时在链接阶段时,汇总符号表也成问题,毕竟符号表决定了,程序到达调用哪个函数。

    C++中函数重载定义与原因是什么

    内部名称

    • 内部名称:C和C++的语言实现都会按照特定规则,将定义的标识符(各种变量名,函数名,类型,命名空间等)转换为对应的内部名称.通过内部名称编译器就可以识别各种标识符.

    • 对于C,仅在标识符加上前缀&lsquo;``_`&rsquo;即swap()》》_swap()

    • 如果从唯一识别函数作用来看,这种规则没有任何用:毕竟除了static和命名空间域里面的函数,函数都具有外联性,一但在不同文件出现同名函数,程序就CREASH。

    • 对于C++,不同编译器下是不同的:

    LINUX:

    C++中函数重载定义与原因是什么

    window:

    C++中函数重载定义与原因是什么

    正是通过这种内部命名规则,函数重载成为可能。

    看完了这篇文章,相信你对“C++中函数重载定义与原因是什么”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    c++
    AI