⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_21991.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:21991 发表者:lzh08 发表日期:2002-11-21 17:02:25
<br>主题:这样使用模板为什么不对?
<br>内容:#include &lt;iostream&gt;<BR>#include &lt;cstdlib&gt;<BR>#include &lt;string&gt;<BR>using namespace std;<BR><BR>template &lt;class elemType&gt;<BR>class Array<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(int size = DefaultArraySize);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(elemType *array, int array_size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(const Array &amp;rhs);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual ~Array() { delete [] ia}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>protected:<BR>&nbsp;&nbsp;&nbsp;&nbsp;static const int DefaultArraySize;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;int _size;<BR>&nbsp;&nbsp;&nbsp;&nbsp;elemType *ia;<BR>};<BR><BR>//缺省构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(elemType sz)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//设置数据成员<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = sz;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个缺省构造函数" &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//初始化内存<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0; ix&lt;_size; ++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia[ ix ] = ix;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ix] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "\n" &lt;&lt; endl;<BR>}<BR><BR>//赋值构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(elemType *array,int sz)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = sz;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个赋值构造函数" &lt;&lt; endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0; ix&lt;_size; ++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia[ ix ] = array[ix];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ ix ] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "\n" &lt;&lt; endl;<BR>}<BR><BR>//拷贝构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(const Array &amp;rhs)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = rhs._size;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个拷贝构造函数" &lt;&lt; endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0;ix&lt;_size;++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia [ ix ] = rhs.ia[ ix ];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ ix ] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR><BR>int main(int argc, char *argv[])<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;const int array_size = 4;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 int<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;int&gt; ia(array_size);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 double<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;double&gt; ia(array_size);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 char<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;char&gt; ia(array_size);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;system("PAUSE");&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;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 &lt;iostream&gt;<BR>#include &lt;cstdlib&gt;<BR>#include &lt;string&gt;<BR>using namespace std;<BR><BR>template &lt;class elemType&gt;<BR>class Array<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(int size = DefaultArraySize);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(elemType *array, int array_size);<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array(const Array &amp;rhs);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual ~Array() { delete [] ia;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>protected:<BR>&nbsp;&nbsp;&nbsp;&nbsp;static const int DefaultArraySize;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;int _size;<BR>&nbsp;&nbsp;&nbsp;&nbsp;elemType *ia;<BR>};<BR><BR>//缺省构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(int sz)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//设置数据成员<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = sz;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个缺省构造函数" &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//初始化内存<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0; ix&lt;_size; ++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia[ ix ] = ix;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ix] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "\n" &lt;&lt; endl;<BR>}//<BR><BR>//赋值构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(elemType *array,int sz)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = sz;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个赋值构造函数" &lt;&lt; endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0; ix&lt;_size; ++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia[ ix ] = array[ix];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ ix ] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "\n" &lt;&lt; endl;<BR>}<BR><BR>//拷贝构造函数<BR>template &lt;class elemType&gt;<BR>Array&lt;elemType&gt;::Array(const Array &amp;rhs)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;_size = rhs._size;<BR>&nbsp;&nbsp;&nbsp;&nbsp;ia = new elemType[_size];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; "这是一个拷贝构造函数" &lt;&lt; endl;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;for (int ix=0;ix&lt;_size;++ix)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ia [ ix ] = rhs.ia[ ix ];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; ia[ ix ] &lt;&lt; endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR><BR>int main(int argc, char *argv[])<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;const int array_size = 4;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 int<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;int&gt; ia(array_size);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 double<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;double&gt; da(array_size);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//elemType 变成了 char<BR>&nbsp;&nbsp;&nbsp;&nbsp;Array&lt;char&gt; ca(array_size);<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;system("PAUSE");&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;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 + -