C++与C#对比学习:模板,泛型

本文介绍了C++中的模板概念及其用法,包括函数模板和类模板,并对比了C#中的泛型实现方式。通过实例展示了如何利用模板进行泛型编程,以解决不同对象类型间通用操作的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为啥要用模板

我们知道有很多不同的对象类型可能有相同的操作,基本类型如数值类型的都有加减乘除,比大小啊.一个个从现实中抽象出来的类就更是具体很多共性了.如果是同一类事物可以弄个父类出来就OK,比如动物都具体的某些通用操作就搞个animal基类完事.但如果不是同一类事物,就不容易整个继承关系出来啊.比如人有身高,可以计算体重,一块石头也有长宽高,可以计算体重.如果有一个计算体重的函数,大家都可以拿来用,只要传不同的参数就行.函数重载可以实现类似的功能,但太麻烦了点,要整蛮多个函数啊.

于是在C++中就出现了模板(template)的概念.类中应用到模板就叫类模板,函数中应用到模板就叫函数模板.所谓模板嘛,就是个架子框架,我们拿来填充些内容才有实际用处.像做PPT时就有很多模板啊.C++中的模板就是里面用到一些变量,类型是不知道的.只有你调用的时候传个具体的类型,然后才会生成具体的类或模板,然后再调用.当然这是编译器后台给你做了很多工作.使用模板编程又叫泛型编程.

C#里面没有模板的概念,不过有个泛型的概念.有点像把模板简化一下了.当然它们还是有些其他区别的.

C++模板用法

函数模板

举个最简单的例子,比较两数大小

template<typename T> //也可以把typename换成class,T也可以随便换成啥

T max(T one, T two)

{

return one > two ? one : two;

}

int a = 123;

int b = 456;

int c = max(a,b);

类模板

template<typename TT>

class Simple

{

public:

TT Max(TT a,TT b)

{

return a > b ? a : b;

}

}

;

double a = 123;

double b = 543;

Simple<double> sm;

double c = sm.Max(a,b);

C#泛型

class Temp<T>

{

public bool Max(T a, T b)

{

if (a.Equals(b))

return true;

else

return false;

}

}

Temp<int> temp = new Temp<int>();

int a = 123;

int b = 123;

bool result = temp.Max(a, b);

上面都是最为简单的例子了,实际上还有很多复杂的用法的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值