群体类与群体数据组织

这里是Joe自己的c++学习笔记,如果能帮助到你,那我受宠若惊!

可以提高代码可重用性(对于不同类型的数据)

函数模板

template<模板参数表>

类型名 函数名(参数表)

{

函数的定义

}

template<typename T>
T abs(T x){//T 表示可以为任意参数类型
    return x>0?x:-x;
}

函数模板中函数体的定义方式与定义普通函数类似。、

类模板

把类定义为一种模式,使得类中的某些数据成员、成员函数的参数、返回值或者局部变量取到任意的类型。

类成员的声明方法与普通类的定义几乎相同。

类模板声明形式:

template<模板参数表>

class 类名

{

类成员声明

}

在类模板之外定义成员函数:

template<模板参数表>

类型名 类名<模板参数标识符列表>::函数名(参数表)

注:一个类模板生命自身并不是一个类,而是说明了一个类的家族,只有在被其他代码引用时,模板才根据引用的需要生成具体的类

#include<iostream>
#include<cstdlib>
using namespace std;
struct Student{
    int id;
    float gpa;
};
template<class T>//类模板:实现任意数据类型的存取
class Store{
    private:
    T item;//item用于存放任意数据类型
    bool value;
    public:
    Store();//无参数默认的构造函数
    T &getElem();
    void putElem(const T &x);
};
template<class T>
Store<T>::Store():value(false){}
template<class T>
T &Store<T>::getElem(){
    if(!value){
        exit(1);
    }
    return item;

}
template<class T>
void Store<T>::putElem(const T &x){
    value=ture;
    item=x;
}
int main(){
    Store<int>s1,s2;//初始化item为int类型
    s1.putElem(3);
    s2.putElem(-7);
    cout<<s1.getElem()<<" "<<s2.getElem()<<endl;

    Student g={1001.23};
    Store<Student>s3;//初始化item为结构体Student类型
    s3.putElem(g);
    cout<<s3.getElem().id<<endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值