首页 > 编程知识 正文

c语言代码模板,malloc函数

时间:2023-05-03 07:58:01 阅读:25210 作者:3974

函数模板是典型的函数描述,可以使用泛型类型定义函数,并将泛型类型替换为特定类型。 通过将类型作为参数传递给模板,编译器可以为该类型生成函数。 模板有时也称为通用编程,因为它允许以通用方式而不是特定类型编写程序。

在标准C 98中添加关键字typename之前,c使用关键字class创建模板。 例如:

在C 11中,可以用typename替换类。

调用函数模板:

重载的函数模板

例如:

模板的显示具体化

假设有一个结构,并且c允许将一个结构分配给另一个结构。 如果只想交换部分成员,则需要不同的代码。

可以提供实例化函数定义——来显示实例化。 如果编译器找到与函数调用匹配的实例化,则使用此定义,并且不再搜索模板。

1 .对于给定的函数名称,可以有非模板函数、模板函数以及显示具体化函数及其重载版本。

2 .为了展示具体化的原型和定义,必须以template为开头,按名称指定类型。

3 .具体化优先于普通模板,非模板函数优先于具体化和模板函数。

例如:

实例化:

当函数调用swap(I,j )时,编译器将生成使用int类型的swap ) )的实例。

模板不是函数定义,但使用int的模板实例是函数定义。 这种实例化方法称为隐式实例化。

c允许实例化显示,template void swapint(int, int )

编译器选择使用哪个函数版本

对于函数重载、函数模板和函数模板重载,c定义了一个很好的策略,用于确定将哪个函数定义用于函数调用。 此过程称为重载分析,特别是在有多个参数的情况下。

1 .完全匹配,但普通函数优先于模板。

2 .提升转换(char和short自动转换为int,float自动转换为double )。

3 .标准转换(int转换为char,long转换为double )。

4 .用户定义的转换,如类声明中定义的转换。

函数的变量类型与返回类型

如果函数具有多种参数类型

x y的类型是无法预测的。 使用decltype关键字推测类型。

如果函数具有返回类型:预先不知道x y的类型。 此时,没有声明参数x和y,它们不在范围内(编译器看不到它们,也不能使用它们)。 声明参数后,必须使用decltype。

当前,decltype声明在参数之后,因此x、y位于范围内,可以使用它们。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。