逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
函数重载:
函数名字相同,最少起码是参数的类型不一样,参数个数不一样那更好了,但是不能只是返回类型不一样。
void func(int n) {...};
void func(float n) {...};
一起调用:
func(10);
func(20.001);
这时编译不通过,提示重载函数的调用不清楚,因为第二个可能会把float强制转换为int,所以必须明确的强制指定为float才行,下面的调用编译通过:
func(10);
func((float)20.001); 或者 func(20.00f);
 
重载函数通过签名(signature)进行识别,签名是函数名和参数类型的组合。
编译器用函数参个数和类型编码每个函数标识符(或名字改编),以保证类型安全连接。如Borland C++中,每个
改编名用 @加上函数名
改编参数以 $q 开头
zc 表示 char, pf 为 float*, pd 为 double*, i 为 int, pi, f, d,
如 void nothing(int a, float b, char c, double *d); 的改编名为
@nothing$qifzcpd
 
重载函数通常用于不同类型用不同程序逻辑进行类似的操作。
如果每种数据类型的程序逻辑和操作相同,那么使用函数模板会更好一些。
template <class T>
T max(T a, T b, T c) {
        T max;
        max= a > b? a : b;
        max = max > c? max : c;
        return max;
}
 
posted on 2010-12-17 17:30 逛奔的蜗牛 阅读(408) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理