Array|C++之重载函数学习( 二 )


【Array|C++之重载函数学习】根据重载规则跳线与函数指针参数列表一致的候选者
严格匹配候选者的函数类型与函数指针的函数类型
代码试验:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

从输出结果来看 , 很明显调用了第一个func函数 。
2、注意:
函数重载必然发生在同一个作用域中
编译器需要用参数列表或者函数类型进行函数选择(也就是说碰到指针 , 要注意函数类型了)
无法直接通过函数名得到重载函数的入口地址 , 这里还是通过上面的例子演示一下:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

三、C++和C相互调用:
实际工程中C++和c代码相互调用是不可避免的
c++编译器能够兼容c语言的编译方式
c++编译器会优先使用c++编译的方式
extern关键字能够强制让C++编译器进行c方式的编译:
Array|C++之重载函数学习
文章图片

文章图片

1、下面进行一个c++中调用c函数 , 这里我在当前创建三个文件:add.c、add.h、main.cpp 。内容分别如下:
add.c内容:
Array|C++之重载函数学习
文章图片

文章图片

add.h内容:
然后我用gcc编译编译生成add.o文件:
Array|C++之重载函数学习
文章图片

文章图片

然后main.cpp里面调用add.c
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

结果显示找不到这个函数 , 为了能够在c++里面调用c语言里面的函数 , 我们就要使用刚才上面讲的第四点了;这里我们先用nm命令来查看一下add.o文件里面是否生成符号表(有生成):
Array|C++之重载函数学习
文章图片

文章图片

解决方法 , main.cpp改成:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片


推荐阅读