欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > C++模板

C++模板

2025/5/9 21:17:39 来源:https://blog.csdn.net/ff0823/article/details/142824224  浏览:    关键词:C++模板

一,泛型编程

        (1),重载的函数仅仅是类型的不同,代码的复用率比较低,只要有新的类型出现,用户需要自己添加相应的函数。

        (2),代码的可维护性差,一个出错所有的重载都会出错。

编写与类型无关的通用代码,是代码复用的一种手段。

二,函数模版

        概念:函数模版代表了一个函数家族,该函数模版与类型无关,在使用方式要参数化,根据实参类型产生特定的函数模版。

        格式:template<typename T1,typename T2,………>

                   返回类型  函数名  (参数列表){}

注意:typename是用来定义模版参数的关键字,也可以用class(切记,struct不能用class代替)。

三,函数模版的实例化

         用不同的类型的参数使用函数模版时,称为函数模版的实例化。模版参数实例化可以分为:

隐式实例化和显示实例化。

        隐式实例化(用参数来进行推导类型)

显示实例化(在函数名的<>填上指定的参数的实际类型)

注:如果类型不匹配,编译器会尝试隐式类型转换,如果转换后还编译不成功就要报错。

四,模版匹配原则

         一个非模版的函数可以和一个同名的函数模版同时存在,而且还可以实例化成这个同名函数。

        对于非模版的同名函数和同名函数模版,如果其他的条件都相同,那优先调用飞模版函数。但是,如果模版可以产生一个具有更好匹配的函数,那将选择模版。

        函数模版不可以自动的转换类型,但普通的函数可以进行自动的类型的转换。

五,类模版

        类的实例化需要在类模版名字后跟<>,然后将实例化的类型放在<>中即可,类模版名字不是真正的类,而实例化的结果才是真正的类。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词