C++中函数重载和函数模板的理解

本文深入探讨了C++中的函数重载原理,并强调了函数参数列表的重要性。此外,还介绍了函数模板的概念,包括隐式实例化、显示实例化及具体化的区别与应用。

第二遍看C++Primer Plus。。泪目啊。。C++真心难,第一遍是我一年前看的。现在再看感觉好像全新的一样。。。

好了,简单介绍下函数重载,学过编程的都对这个重载很熟悉了。函数重载的判断标识是它的函数参数列表,而不是返回值来判断的。所以像

long gronk(int n, float m);
double gronk(int , float m);
是会报错的。这没有函数重载。

接下来是函数模板。

函数模板类似

template<class Any>
void swap (Any &a, Any &b)
{
    Any temp;
    temp = a;
    a = b;
    b = temp;
}		

接下来介绍下函数模板里非常重要的具体化和实例化。

其实,在使用函数模板时,编译器会自动把模板实例化,称为隐式实例化,类似

void swap (int &a, int &b);

就是实例化成了这样一个函数, 只不过是隐式的。

显示实例化类似

template void swap<int>(int &a,int &b);
显示具体化类似
template <> void swap<int>(int &a,in t &b);
两者的差别是template后面的括号。

具体化将会覆盖常规模板,非模板函数将会覆盖具体化和常规模板。

在我的理解就是,显式具体化和显示实例化都是讲某一特定类型的模板函数进行实例化,调用它们时将不会调用模板函数的定义。所以同一编程单元中,同一类型不能同时存在显示具体化和显示实例化。否则二义了。

好了,先介绍这里。明天开始我网络方面的可靠数据传输协议还要看看,C++的类和对象还要复习下,争取把const和引用的关系整理出来,也写一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值