C++中的模板类

什么是模板类:C++发展到一定层次后,必然有部分代码存在仅传参的数据类型不同而内容一致的情况。因此,C++为解决此类场景,特推出模板类的使用。

模板类是一种泛型技术,即与数据类型无关的通用程序设计技术。可以使我们设计出独立于数据类型的程序。模板类本身不占空间,当编译器执行到模板参数的调用时,当在程序中赋予具体的数据类型后并调用时则占用空间。

函数模板与模板声明间不能有任何语句,注释也不可以有。

常见的模板包含函数模板与类模板。模板的声明中class含义同typenamec,class并不是表明后续的类型名是一个类,而表示后续是一个通用的类型说明符。

一、函数模板

函数模板针对仅参数类型不同的函数。

函数模板的格式

template <class 类型名,class类型名> 

返回值 函数名(形参列表)

{

        // 函数体

}

示例:

template <class T> 

void Cat(T& a, T& b)

{

        // 实现

}

调用:

Cat(1,2); // 函数模板直接调用,模板自动识别参数类型

(4条消息) C++函数模板详解及注意事项_io无心的博客-优快云博客

二、类模板

类模板针对仅数据成员成员函数类型不同的类。

类模板的格式:

template <class 类型名, class 类型名>

class 类名

{

        // 类实现

}

#include <iostream>
using namespace std;

template <typename T>
class A
{
public:
    //函数的参数列表使用模板类型
    A(T t = 0){
        this->t = t;
    }
    //成员函数返回值使用模板类型
    T& getT(){  // C++中引用的使用
        return t;
    }

private:
    //成员变量使用模板类型
    T t;
};

void printA(A<int>& a) {
    cout << a.getT() << endl;
}

int main(void) {
    //1.模板类定义类对象,必须显示指定类型
    //2.模板种如果使用了构造函数,则遵守以前的类的构造函数的调用规则
    A<int> a(666);     // 构造函数仅在创建对象时使用 类名<参数类型> 对象名;
    cout << a.getT() << endl;

    //模板类做为函数参数
    printA(a);
    system("pause");
    return 0;
}

666
666

注意

模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的七小沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值