8-9-函数重载overload
来源:互联网 发布:当网络写手挣钱吗 编辑:程序博客网 时间:2024/06/07 18:42
1、函数重载
2、函数重载条件
合法的,
只有返回值不同,是不能确定为函数重载的
但是,当重载遇上指针时,重载函数要严格要求匹配参数和返回值类型
3、
编译器报错,不会调用,出现二意性
4、
5、函数重载的本质
#include <stdio.h>int add(int a, int b) // int(int, int){ return a + b;}int add(int a, int b, int c) // int(int, int, int){ return a + b + c;}int main(){ printf("%p\n", (int(*)(int, int))add);//通过函数类型获取重载地址 printf("%p\n", (int(*)(int, int, int))add); return 0;}打印两个函数入口地址,发现重载的函数入口地址是不同的,证明两个函数是不同的
6、小结
7、重载与指针
第一个
#include <stdio.h>#include <string.h>int func(int x){ return x;}int func(int a, int b){ return a + b;}int func(const char* s){ return strlen(s);}typedef int(*PFUNC)(int a);int main(int argc, char *argv[]){ int c = 0; PFUNC p = func; c = p(1); //重载遇到指针时,严格匹配参数和返回值类型 printf("c = %d\n", c); return 0;}
8、
9、
10、
11、
#ifdef __cplusplusextern "C" {#endif#include "add.h"#ifdef __cplusplus}#endif
此方法既能保证 代码在C编译器通过又能保证在C++编译器下通过,都是按照C的编译方式来编译
12、
使用 nm命令可以查看编译过后的文件中 函数命
g++ -c test.cpp -o test.o
nm test.o
int add(int a, int b){ return a + b;}int add(int a){ return a;}const char* add(const char* a){ return "abcd";}0000000000000014 T _Z3addi0000000000000000 T _Z3addii0000000000000020 T _Z3addPKc
13、
阅读全文
0 0
- 8-9-函数重载overload
- 函数的重载(OVERLOAD)
- java函数重载 overload
- 关于函数重载(overload)
- 函数模板的重载(overload)
- 函数重载(overload),函数覆盖,函数隐藏
- c++之-----重载函数overload function
- C#基础知识之函数重载OverLoad
- C++笔记4--函数重载(function overload)
- 重载 overload
- 重载(Overload)
- 函数重载(overload)、函数覆盖(override)与隐藏
- C++ 函数重载(overload)、函数覆盖(override)与隐藏
- 第[4天] 函数——函数的重载 overload
- 函数重载(overload)和函数重写(override)的基本规则
- C++函数重写(override)与函数重载(overload)
- 函数重载(overload)、函数覆盖(override)与隐藏
- C++ 和 Delphi 的函数覆盖(Override)与重载(overload)
- python:利用pandas进行绘图(总结)基础篇
- 嵌入式数据库架构特点
- win10如何修改锁屏(欢迎界面)的用户名
- C/C++中函数参数传递详解
- springboot入门(一)--快速搭建一个springboot框架
- 8-9-函数重载overload
- 哈夫曼编码
- deadLock
- Sublime配置Terminal插件
- 自己的第一篇博客
- 泛型编程与模板
- hadoop搭建之静态ip配置
- NOIP模拟(20171023)T2 一样远
- ubuntu16.04下使用matplotlib出现`TypeError: Couldn't find foreign struct converter for 'cairo.Context'`解决