Cplusplusrookie 2016-08-05 08:43 采纳率: 50%
浏览 1799
已采纳

c++中自己定义的同名函数会覆盖自己dll中的函数吗

我自己试了一下,分别创建了
zz.h和zz.cpp两个文件,然年在zz.h 里声明了void generate()这个函数,在zz.cpp中
实现了它,然后在我的VS 项目属性配置中,添加了md5.lib和md5.dll,这是我生成的
两个文件,也有generate这个函数的定义和声明,我发现运行的时候,使用的是我cpp中
定义的generate函数,但是如果我在CPP中去掉对generate()的定义,程序又会调用我
dll文件中的generate函数
那是不是说,很容易程序员就会写出一个函数把自己想要的外部依赖项中的函数给覆盖?
有没有解决的方法?我学C++的时候可能不太系统,有很多基础的东西都不太懂,希望大神们指点一下,谢谢

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-08-05 09:29
    关注

    会的,C++遵循最近原则,同名的变量,作用域小的覆盖大的。比如
    int i = 3;
    {
    int i = 4;
    i = 5;
    }
    cout << i; //还是3
    http://codepad.org/iO49bOUd

    而函数,你可以认为其实就是一个指针变量,你完全可以定义出重名的变量。结果就是调用的不是api里的那个。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!