查看: 442|回复: 2

[C/C++] 【C++】模板 ①模板函数

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7617
人气
176
分享
52

最佳新人活跃会员

发表于 2023-2-2 20:51:40 | 显示全部楼层 |阅读模式
【废话】
我来更新啦哈哈哈哈
对了,不会有人读模板叫mo ban 吧
正确读音是mu ban,想不到吧
【定义模板函数】
定义模板函数方法如下:
[C++] 纯文本查看 复制代码
template<class homo>
homo Homo(homo HOMO){
    printf("%d",HOMO);
}

例如定义一个加法的模板函数:
[C++] 纯文本查看 复制代码
template<class sum>
sum add(sum a,sum b){
    return a+b;
}

它和普通函数有什么区别呢?
正常情况下,如果要实现整数和实数的想加,必须要定义两个函数:
[C++] 纯文本查看 复制代码
int intAdd(int a,int b){
    return a+b;
}

float flAdd(float a,,float b){
    return a+b;
}

而模板函数可以同时运算整数和实数
【函数模板的使用】
拿加法函数来说,使用方法如下:
[C++] 纯文本查看 复制代码
int result = add(114,514); //正确
float resultF = add(114.5,1919.8); //正确

但以下使用是错误的:
[C++] 纯文本查看 复制代码
float res = add(114,1919.8); //错!!!!

正确方法是:
[C++] 纯文本查看 复制代码
int res = add<int>(114,1919.8);
float res1 = add<float>(114,1919.8);

【重载函数模板】
函数模板只能用于整数和实数,但是如果想用于char *的字符串呢?
这就要用到重载函数了
[C++] 纯文本查看 复制代码
template <class type>
type min(type a,type b){
    return (a < b)?a:b;
}

char *min(char *a,char *b){
    //重载函数模板
    return (strcmp(a,b))?a:b;
}

这样,重载函数就能处理字符串了


本帖被以下淘专辑推荐:

小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

0

技术

6

魅力

1

原创

退休版主

禁止发言

Rank: 8Rank: 8

积分
6014
人气
174
分享
56

最佳新人活跃会员灌水之王

发表于 2023-2-2 21:09:55 | 显示全部楼层
开头一本正经的废话
一只压力超大的屑
我的博客:点此进入

0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6864
人气
217
分享
594

最佳新人活跃会员

发表于 2023-2-3 23:48:48 | 显示全部楼层
本帖最后由 explore 于 2023-2-3 23:50 编辑

C++这种 致秃性极其强大 的语言我可看不懂(bushi,我只看懂了大大小小的homo

我翻开帖子一查,这帖子没有年代,歪歪斜斜的每叶上都写着几大几大行“C艹语言”。
我横竖睡不着,仔细看了半个仲夏夜,才从字缝里看出字来,满本都写着十个,不,九个字是“homo”

鲁迅:这话我没说过,但是雀食在理/ww /xyx

评分

参与人数 1经验 +1 收起 理由
蒟蒻 + 1 6

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表