📄 subject_21991.htm
字号:
<p>
序号:21991 发表者:lzh08 发表日期:2002-11-21 17:02:25
<br>主题:这样使用模板为什么不对?
<br>内容:#include <iostream><BR>#include <cstdlib><BR>#include <string><BR>using namespace std;<BR><BR>template <class elemType><BR>class Array<BR>{<BR>public:<BR> Array(int size = DefaultArraySize);<BR> Array(elemType *array, int array_size);<BR> Array(const Array &rhs);<BR><BR> virtual ~Array() { delete [] ia}<BR> <BR>protected:<BR> static const int DefaultArraySize;<BR><BR> int _size;<BR> elemType *ia;<BR>};<BR><BR>//缺省构造函数<BR>template <class elemType><BR>Array<elemType>::Array(elemType sz)<BR>{<BR> //设置数据成员<BR> _size = sz;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个缺省构造函数" << endl;<BR> //初始化内存<BR> for (int ix=0; ix<_size; ++ix)<BR> {<BR> ia[ ix ] = ix;<BR> cout << ia[ix] << endl;<BR> }<BR><BR> cout << "\n" << endl;<BR>}<BR><BR>//赋值构造函数<BR>template <class elemType><BR>Array<elemType>::Array(elemType *array,int sz)<BR>{<BR> _size = sz;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个赋值构造函数" << endl;<BR><BR> for (int ix=0; ix<_size; ++ix)<BR> {<BR> ia[ ix ] = array[ix];<BR> cout << ia[ ix ] << endl;<BR> }<BR><BR> cout << "\n" << endl;<BR>}<BR><BR>//拷贝构造函数<BR>template <class elemType><BR>Array<elemType>::Array(const Array &rhs)<BR>{<BR> _size = rhs._size;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个拷贝构造函数" << endl;<BR><BR> for (int ix=0;ix<_size;++ix)<BR> {<BR> ia [ ix ] = rhs.ia[ ix ];<BR> cout << ia[ ix ] << endl;<BR> }<BR>}<BR><BR><BR>int main(int argc, char *argv[])<BR>{<BR><BR> const int array_size = 4;<BR><BR> //elemType 变成了 int<BR> Array<int> ia(array_size);<BR><BR> //elemType 变成了 double<BR> Array<double> ia(array_size);<BR><BR> //elemType 变成了 char<BR> Array<char> ia(array_size);<BR> <BR> system("PAUSE"); <BR><BR> return 0;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:小菜瓜 回复日期:2002-11-21 18:23:53
<br>内容:#include <iostream><BR>#include <cstdlib><BR>#include <string><BR>using namespace std;<BR><BR>template <class elemType><BR>class Array<BR>{<BR>public:<BR> Array(int size = DefaultArraySize);<BR> Array(elemType *array, int array_size);<BR> Array(const Array &rhs);<BR><BR> virtual ~Array() { delete [] ia;}<BR> <BR>protected:<BR> static const int DefaultArraySize;<BR><BR> int _size;<BR> elemType *ia;<BR>};<BR><BR>//缺省构造函数<BR>template <class elemType><BR>Array<elemType>::Array(int sz)<BR>{<BR> //设置数据成员<BR> _size = sz;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个缺省构造函数" << endl;<BR> //初始化内存<BR> for (int ix=0; ix<_size; ++ix)<BR> {<BR> ia[ ix ] = ix;<BR> cout << ia[ix] << endl;<BR> }<BR><BR> cout << "\n" << endl;<BR>}//<BR><BR>//赋值构造函数<BR>template <class elemType><BR>Array<elemType>::Array(elemType *array,int sz)<BR>{<BR> _size = sz;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个赋值构造函数" << endl;<BR><BR> for (int ix=0; ix<_size; ++ix)<BR> {<BR> ia[ ix ] = array[ix];<BR> cout << ia[ ix ] << endl;<BR> }<BR><BR> cout << "\n" << endl;<BR>}<BR><BR>//拷贝构造函数<BR>template <class elemType><BR>Array<elemType>::Array(const Array &rhs)<BR>{<BR> _size = rhs._size;<BR> ia = new elemType[_size];<BR><BR> cout << "这是一个拷贝构造函数" << endl;<BR><BR> for (int ix=0;ix<_size;++ix)<BR> {<BR> ia [ ix ] = rhs.ia[ ix ];<BR> cout << ia[ ix ] << endl;<BR> }<BR>}<BR><BR><BR>int main(int argc, char *argv[])<BR>{<BR><BR> const int array_size = 4;<BR><BR> //elemType 变成了 int<BR> Array<int> ia(array_size);<BR><BR> //elemType 变成了 double<BR> Array<double> da(array_size);<BR><BR> //elemType 变成了 char<BR> Array<char> ca(array_size);<BR> <BR> system("PAUSE"); <BR><BR> return 0;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -