2、在“解决方案资源管理器”中展开项目后,右击“源文件”后选择“添加...”->“新建项...”,在“已安装的模板”下的“Visual C++”中选择“C++源文件(.cpp)”添加即可。
1、打开VC2010软件,选择C++,后出现如下界面。
2、点击文件--->新建--->项目后会出现如下界面。
3、点击 32位控制台应用程序 输入名称(我这里写C1),后点击下一步。
4、当出现如下界面是,选择空项目。
5、以上完成后,再点左击C1后,右击源文件,——>添加——>新建项,再选择c++文件,文件名称(我这里01),现在都可以写程序了。
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>{}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)