C++模板中的函数式参数

前面我们提到过,模板类至少有一个类参数,但是可以有多个参数,这些参数中可以存在非类类型的参数,例如系统内建的普通数据类型参数或程序自定义的数据类型参数,我们将这种非类类型的参数称之为函数式参数。

#include <iostream>
using namespace std;
template< class T , int S>
class array
{
public:
    array();
    T & operator[]( int );
    const T & operator[] ( int )const;
    int getlen()const{ return length; }
    ~array();
private:
    int length;
    T * num;
};
template< class T , int S>
array<T, S>::array()
{
    num = new T[S];
    length = S;
}
template< class T , int S>
array<T, S>::~array()
{
    delete[] num;
}
template< class T , int S>
T & array< T, S > ::operator[] (int i)
{
    if( i < 0 || i >= length)
        throw string( "out of bounds" );
    return num[i];
}
template< class T , int S>
const T & array< T, S > ::operator[] ( int i ) const
{
    if( i < 0 || i >= length)
        throw string( "out of bounds" );
    return num[i];
}
template< class T , int S>
ostream & operator<<( ostream & out, const array <T, S> & A)
{
    for(int i=0; i < A.getlen(); i++)
        out<< A[i] << " ";
    return out;
}
int main()
{
    array< int, 10> A;
    for(int i = 0; i < 10; i++)
    {
        A[i] = 2*i;       
    }
    cout<< A << endl;
    return 0;
}
posted @   luoganttcc  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示