十六、类与对象:类模板

来源:互联网 发布:linux应用增量更新 编辑:程序博客网 时间:2024/05/15 21:18
和函数模板类似,都是为了提高代码的复用性,这是面向对象设计中软件开发重要的思想之一。定义如下:
template<模板参数表>类声明
建立对象时的声明:
模板<模板参数表>对象名1,….对象名n;
下面直接上代码:
#include <iostream>#include <string>using namespace std;struct Person   //定义一结构体类型{int id;string name;};template<typename T> //该类用于存储数据类型class Store{public:Store(void);  //无参构造函数T GetItem();  //取得存储值void putItem(T t);  //存储数据private:T item;  //存储项目int isStore;  //是否存储标志};template<typename T>Store<T>::Store(void):isStore(0)  //默认未存储{}template<typename T>T Store<T>::GetItem() {if(isStore==0){cout<<"no data"<<endl;exit(1);}elsereturn item;}template<typename T>void Store<T>::putItem(T t){item=t;isStore=1;}int main(){//Person p={1,"tqtiimy")};  //vc6报错,string不能用初始值列表初始化//一开始也觉得奇怪,后面查后才知道是前期编译器不支持,升级之后是没有问题的Person p;  //创建一结构体对象p.id=1;p.name="tqtiimy";Store<int> s1;        //以int类型创建Store对象Store<Person> s2;    //以Person结构体类型s1.putItem(22);s2.putItem(p);        cout<<s1.GetItem()<<endl;   //这里Store类的复用性明显提高了,根据实际需要生成不同模板cout<<s2.GetItem().name<<endl;return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 充话费总是退款怎么办 月初流量不能用怎么办 微信充值话费退款失败怎么办 ios邮件退款失败怎么办 信用卡充了钱怎么办 ios退款被拒绝怎么办 话费缴错了怎么办 网上缴费交错了怎么办 别人给交错话费怎么办 联通流量不到账怎么办 卖家拒绝退款怎么办? 淘宝退款后红包怎么办 手机不能吃鸡怎么办? 在国外手机软件好多不支持怎么办 淘宝店拒绝退款怎么办 app没有退款资格怎么办 手机无法计步怎么办 抖音机型不支持怎么办 用nfc不支持卡片怎么办 移动怎么办省内流量包 手机交不了话费怎么办 淘宝快递不签收怎么办 快递买家不签收怎么办 淘宝退货未收货怎么办 淘宝退衣服运费怎么办 手机流量不到账怎么办 淘宝水果坏了怎么办 用微信充值话费充成空号了怎么办 苹果id被拉黑了怎么办 苹果app不退款怎么办 合同退款不退怎么办 微信充值q币被骗怎么办 小米手机存储空间不够怎么办 小米mix2s存储空间不够怎么办 进货一直没发票怎么办 魅蓝note5卡怎么办 电话费套餐花不了怎么办 墙和床头有间缝怎么办 床板里有虫子怎么办 松木床板味道大怎么办 寝室床板有虫子怎么办