模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。
类模板、函数模板的定义方式是template<class或者typename T>,其中class和typename似乎是没有区别的,只是说class的方式使用年代久远一些,现在更加提倡使用typename关键字。
以下为写的测试程序。
以下为.h文件内容
类模板、函数模板的定义方式是template<class或者typename T>,其中class和typename似乎是没有区别的,只是说class的方式使用年代久远一些,现在更加提倡使用typename关键字。
以下为写的测试程序。
以下为.h文件内容
<pre name="code" class="objc"><pre name="code" class="cpp">#pragma once
#ifndef TEMPLATE_H
#define TEMPLATE_H
template<class object>
struct student
{
object num;
object score;
};
template<class object>
class sample
{
public:
sample(){};
~sample(){};
object sample::compare();
public:
object a;
object b;
student<object> stu1;
};
template<class object>
object sample<object>::compare()
{
if(a>b) return a;
else return b;
}
#endif
一下为main文件的类容
// ttemplate.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include"template.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
sample<double> ksam;
//student<int> stu1;
cin>>ksam.a;
cin>>ksam.b;
cin>>ksam.stu1.num;
cout<<"ksam.a;"<<ksam.a<<endl;
cout<<"ksam.b;"<<ksam.b<<endl;
cout<<"the big is:"<<ksam.compare()<<endl;
cout<<"ksam.stu1.num;"<<ksam.stu1.num<<endl;
cout<<"the length of double:"<<sizeof(double)<<endl;
cout<<"the length of ksam.b:"<<sizeof(ksam.b)<<endl;
cout<<"the length of ksam.stu1.num:"<<sizeof(ksam.stu1.num)<<endl;
cout<<"the length of ksam.stu1:"<<sizeof(ksam.stu1)<<endl;
cin>>ksam.a;
return 0;
}