上传新文件

上级 eb25af97
/*
* 虽然函数重载很吸引人,但也不要滥用。
仅当函数基本上执行相同的任务,但使用不同形式的数据时,
才应采用函数重载。另外,您可能还想知道,
是否可以通过使用默认参数来实现同样的目的。
例如,可以用两个重载函数来代替面向字符串的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.
先完成此消息的编辑!
想要评论请 注册