模板(一) 基本模板

模板是C++中的一个重要特性,允许创建泛型代码。函数模板通过实参类型推断实现多态,例如示例中的`is_same`。类模板如`vector`在标准库中广泛应用,需要指定模板参数,如`vector<int>`。此外,还可以为模板提供默认参数,简化使用,如在声明中设定默认类型。

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

模板就是一个公式,由实参自动推断类型。
下面是一个模板应用的简单例子:

函数模板

template<typename T>
bool is_same(const T& first_one,const T& second_one)
{
    return first_one==second_one;
}

其中编译器会根据实参的类型来实例化出一个模板。
参考以下例子:

cout<<"1 and 2"<<(is_same(1,2) ? "equal" : "not equal") <<endl;

其中is_same的实例化如下:

// template<typename T> 
bool is_same(const int& first_one,const int& second_one)
{
    return first_one==second_one;
}
// T=int

其中,T被推断为int。

类模板

我们常用的C++标准库中就有很多类模板,如vector
一般来说,我们必须为类模板提供模板参数。
如:

vector<int> a;

其中vector的模板参数就是我们提供的int。

默认模板参数

我们可以为模板提供默认模板参数。
此后,我们可以直接使用默认参数。
使用默认参数的方法是:书写一个空尖括号对
设置默认模板参数的方法是,在class T或typename T后书写一个=,再写上你所想要的类型
参考下面的例子:

template<typename T=wchar_t>
struct example{
//...
};
example<int> a;
example<> b;//等价于example<wchar_t>

更多与模板知识相关的内容(包、包拓展、std::forward模板和模板特例化)
见下一章。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值