c++语言 类模板的使用 类模板的实现

//类模板的使用
//针对不同数据类型要设计不同版本的类,但是内部的实现是一样的.这样做不但重复劳动还容易出错,后期和调试的工作量相当大.类模板解决了上述的问题.
//#类模板的声明和实例化
//类模板能够为类的数据成员,成员函数的参数,返回值提供动态参数化的机制,使得用户可以方便地设计出功能更为灵活的类.
/*
temple <class T>
class Calculate
{
    public:
        Calculate(T a, T b);
        T Add();
        T Subtraction();
    private:
        T m_a;
        T m_b;
};
*/
//其中,第一行为模板声明.格式为template <class 类型参数名>.
//template的意思是"模板", 是声明模板类时必须加上的关键字.在template后的"<>"中是参数列表,关键字class表示后面的是类型参数.
//对类模板进行实例化定义类对象的时候也要注意定义的形式:
//类模板名 <实际类型名> 对象名(实参列表); 例如在主程序中定义一个Calculate的整形参数对象应该为:Calculate<int> cal(20, 10);

//类模板的实现
//无论是声明还是定义都少不了template关键字.
//当定义类中的函数时,格式如下:
/*
template <参数类型列表>
返回值 类名<参数类型列表>::函数名(参数列表)
{函数体内容;}
*/
//类模板的实现

#include "stdafx.h"
#include <iostream>
using namespace std;

template <class T>
class Compare
{
public:
    Compare(T a, T b);
    T Min();
    T Max();
private:
    T num1;
    T num2;
};
template <class T>
Compare<T>::Compare(T a, T b)
{
    num1 = a;
    num2 = b;
}
template <class T>
T Compare<T>::Min()
{
    if(num1>num2)
        return num2;
    else
        return num1;
}
template <class T>
T Compare<T>::Max()
{
    if(num1<num2)
        return num2;
    else
        return num1;
}

int main(int argc, char * argv[])
{
    Compare<int> com1(20.12,30);
    cout << "Min is:" << com1.Min() << endl;
    cout << "Max is:" << com1.Max() << endl;
    Compare<double> com2(40.51, 50);
    cout << "Min is:" << com2.Min() << endl;
    cout << "Max is:" << com2.Max() << endl;


    return 0;
}
//在上面的代码中,首先定义了一个类模板(Compare).为了使定义的类为类模板,要在类的定义前编写template<class T>.在类中声明类模板的构造函数和成员函数,并且添加两个私有成员变量num1和num2,
//用来存放要进行比较的数据.类定义完之后,要对类中的成员函数进行定义,这里选择在类外进行定义.每一次定义成员函数时都要编写template<class T>,并且将其放在函数定义之前.
//在主函数(main)中,可以看到当希望使用的数据是int型时,要在定义对象的同时给予声明Compare<int> com1(20, 10);.
//通过这个实例可以更深刻地认识到,要在每次编写类和函数的定义时在前面加上template<class T>.

原文链接: https://www.cnblogs.com/pythonschool/archive/2012/11/09/2762628.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/68738

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午1:28
下一篇 2023年2月9日 下午1:28

相关推荐