c++中如何使用类模板

在VC2010中添加是添加类还是新建项?... 在VC2010中添加是添加类还是新建项? 展开
 我来答
百度网友58f1315
推荐于2017-11-28 · TA获得超过857个赞
知道小有建树答主
回答量:290
采纳率:83%
帮助的人:200万
展开全部
template<typename T>//方法模板
T add(T const&a,const T&b){//两个const限定等价
return a+b;
}//注意,这里没有分号,因为这是方法

template<typename T>//结构体模板
struct S{
T s;
};//注意,这里有分号,因为这是结构体

template<typename T>//类模板
class A{
public:
S<T> s;//使用了结构体模板
void set(T s0);
};//注意,这里有分号,因为这是类

template<typename T>//实现类里面的方法
void A<T>::set(T s0){//注意这一行的格式
s.s=s0;
}
//注意,这个方法只有到被使用时才会开始实例化,不过可以显式实例化让它一开始就实例化

int main(){
template A<int>;//显式实例化
template A<double>;
int a=1,b=2;
double c=3.3;
add(a,b);//正确
add(a,c);//错误,模板参数类型是严格匹配的,不可能进行隐式转换
A<int> a;//使用了类模板
a.set(5);
cout<<a.s.s;//输出5
}

以上为类型参数模板
下面为值参数模板
template<unsigned int N>
class bitset;
。。。
bitset<100> b1;

模板定做,即针对某一类型的参数特别处理,比如加法并不是对所有的类型都适用,对于char*类型就要定做下
//先定义模板
template<typename T>
class A{
public:
T s;
void show();
}
template<typename T>
void A<T>::show(){
cout<<s<<endl;
}
//然后模板定做
class B{}//定义一个类型
template<>//不要填入类型
class A<B>{//直接使用自己需要的类型
public:
B s;//相应改为自己需要的类型
void show();
}
void A<B>::show(){//注意格式,这里没有template语句
cout<<s<<endl;
}

模板参数可以有多个
template<typename T1,typename T2>
class A{}

只定做T2而不定做T1就叫局部定做,如:
template<typename T1>
class A<T1,T1>{}

template<typename T1>
class A<T1,B>{}
追问
不要答非所问啊!我问要添加新建项还是直接添加类啊???
追答
额。。不好意思,我看错了

不过,这个需要新建项么,直接添加类就可以了啊
ask4torrents
2012-05-26 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:47.2万
展开全部
模板是c++的一种语法,和vc没什么关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式