Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
全部都想学怎么办
CPP_PrimerPlus
提交
84ed5921
C
CPP_PrimerPlus
项目概览
全部都想学怎么办
/
CPP_PrimerPlus
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CPP_PrimerPlus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
84ed5921
编写于
3月 28, 2022
作者:
全部都想学怎么办
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
上传新文件
上级
eb25af97
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
0 deletion
+47
-0
Ch8函数探幽/函数重载/何时使用函数重载.cpp
Ch8函数探幽/函数重载/何时使用函数重载.cpp
+47
-0
未找到文件。
Ch8函数探幽/函数重载/何时使用函数重载.cpp
0 → 100644
浏览文件 @
84ed5921
/*
* 虽然函数重载很吸引人,但也不要滥用。
仅当函数基本上执行相同的任务,但使用不同形式的数据时,
才应采用函数重载。另外,您可能还想知道,
是否可以通过使用默认参数来实现同样的目的。
例如,可以用两个重载函数来代替面向字符串的left()函数;
*/
char
*
left
(
const
char
*
str
,
unsigned
n
);
//two arguments
char
*
left
(
const
char
*
str
);
//one argument
/*
* 使用一个带默认参数的函数要简单些。
只需编写一个函数(而不是两个函数),
程序也只需为一个函数(而不是两个)请求内存;
需要修改函数时,只需修改一个。
然而,如果需要使用不同类型的参数,
则默认参数便不管用了,在这种情况下,应该使用函数重载。
*/
/*
* 什么是名称修饰
* C++如何跟踪每一个重载函数呢?它给这些函数指定了秘密身份。
使用C++开发工具中的编辑器编写和编译程序时,
C++编译器将执行一些神奇的操作——
名称修饰( name decoration )或名称矫正( namemangling ),
它根据函数原型中指定的形参类型对每个函数名进行加密。
请看下述未经修饰的函数原型:
*/
long
MyFunctionFoo
(
int
,
float
);
/*
* 这种格式对于人类来说很适合;
我们知道函数接受两个参数(一个为int 类型,另一个为float类型),
并返回一个long 值。
而编译器将名称转换为不太好看的内部表示,来描述该接口,如下所示:
*/
//举例子
//? MyFunctionFoo@@YAXH
/*
* 对原始名称进行的表面看来无意义的修饰(或矫正,因人而异)
将对参数数目和类型进行编码。添加的一组符号随函数特征标而异,
而修饰时使用的约定随编译器而异。
*/
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录