我自己试了一下,分别创建了
zz.h和zz.cpp两个文件,然年在zz.h 里声明了void generate()这个函数,在zz.cpp中
实现了它,然后在我的VS 项目属性配置中,添加了md5.lib和md5.dll,这是我生成的
两个文件,也有generate这个函数的定义和声明,我发现运行的时候,使用的是我cpp中
定义的generate函数,但是如果我在CPP中去掉对generate()的定义,程序又会调用我
dll文件中的generate函数
那是不是说,很容易程序员就会写出一个函数把自己想要的外部依赖项中的函数给覆盖?
有没有解决的方法?我学C++的时候可能不太系统,有很多基础的东西都不太懂,希望大神们指点一下,谢谢
会的,C++遵循最近原则,同名的变量,作用域小的覆盖大的。比如
int i = 3;
{
int i = 4;
i = 5;
}
cout << i; //还是3
http://codepad.org/iO49bOUd
而函数,你可以认为其实就是一个指针变量,你完全可以定义出重名的变量。结果就是调用的不是api里的那个。