在ps中网站界面应做多大,网页制作软件绿色版,合肥最新通知今天,重庆门户网站开发报价上一篇文章在那个学习了多参数类模板与特化的分析#xff1a;点击链接查看上一篇文章#xff1a;类模板深度剖析
本篇文章学习记录#xff1a;
数值型模板参数实现C数组类模板
1、模板中的数值型参数
模板参数可以是数值型参数。也就是非类型参数。如下图所示#xff1…上一篇文章在那个学习了多参数类模板与特化的分析点击链接查看上一篇文章类模板深度剖析
本篇文章学习记录
数值型模板参数实现C数组类模板
1、模板中的数值型参数
模板参数可以是数值型参数。也就是非类型参数。如下图所示
我们可以像上面定义一个局部数组但是却不能这样定义
int n10;
funcdouble,n();上面这种写法就是错的
实际上不光是类型参数不能为数值型模板参数下面几种情况也不能作为模板参数
浮点数不能作为模板参数变量不能作为模板参数上面的int n类对象不能作为模板参数
实际上数值型模板参数是必须在编译阶段被处理的单元因此在编译阶段数值型模板参数必须被准确无误的确定。向上面的变量类对象等都是只有在运行的时候才能够被确定的所以不能作为数值型模板的参数。
2、实现C中的数组类模板
以下使用C的模板技术实现一个通用的数组类。并给出创建的实例。从而更加深刻的理解模板技术。具体代码比较简单就不分析了主要理解使用模板技术编写一些通用的类如何实现。
HeapArray.h
#ifndef _HEAPARRAY_H_
#define _HEAPARRAY_H_templatetypename T
class HeapArray
{
private:int m_length;T* m_pointer;HeapArray(int len);HeapArray(const HeapArrayT obj);bool construct();
public:static HeapArrayT* NewInstance(int length); int length();bool get(int index, T value);bool set(int index ,T value);T operator [] (int index);T operator [] (int index) const;HeapArrayT self();~HeapArray();
};templatetypename T
HeapArrayT::HeapArray(int len)
{m_length len;
}templatetypename T
bool HeapArrayT::construct()
{ m_pointer new T[m_length];return m_pointer ! NULL;
}templatetypename T
HeapArrayT* HeapArrayT::NewInstance(int length)
{HeapArrayT* ret new HeapArrayT(length);if( !(ret ret-construct()) ) {delete ret;ret 0;}return ret;
}templatetypename T
int HeapArrayT::length()
{return m_length;
}templatetypename T
bool HeapArrayT::get(int index, T value)
{bool ret (0 index) (index length());if( ret ){value m_pointer[index];}return ret;
}templatetypename T
bool HeapArrayT::set(int index, T value)
{bool ret (0 index) (index length());if( ret ){m_pointer[index] value;}return ret;
}templatetypename T
T HeapArrayT::operator [] (int index)
{return m_pointer[index];
}templatetypename T
T HeapArrayT::operator [] (int index) const
{return m_pointer[index];
}templatetypename T
HeapArrayT HeapArrayT::self()
{return *this;
}templatetypename T
HeapArrayT::~HeapArray()
{delete[]m_pointer;
}#endif
main.cpp
#include iostream
#include string
#include Array.h
#include HeapArray.husing namespace std;int main()
{HeapArraychar* pai HeapArraychar::NewInstance(10);if( pai ! NULL ){HeapArraychar ai pai-self();for(int i0; iai.length(); i){ai[i] i a;}for(int i0; iai.length(); i){cout ai[i] endl;}}delete pai;return 0;
}在linux系统上对上述程序进行编译并运行得出结果如下图 很明显我们的数组类模板实现的很成功。
本文参考狄泰软件学院相关课程 想学习的可以加狄泰软件学院群 群聊号码199546072
学习探讨加个人可以免费帮忙下载CSDN资源 qq1126137994 微信liu1126137994