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

📄 subject_32550.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:32550 发表者:kard_king 发表日期:2003-03-12 22:34:58
<br>主题:对构造函数的疑惑
<br>内容:请看下面的程序:<BR>#include&lt;iostream.h&gt;<BR>class TEST<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;TEST(int i)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Constructing with"&lt;&lt;i&lt;&lt;".\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;~TEST()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Destructing.\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;int get()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return value;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;int value;<BR>};<BR>void display(TEST obj)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Display with"&lt;&lt;obj.get()&lt;&lt;".\n";<BR>&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>}<BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;TEST explorer(5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;display(explorer);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR><BR>这个程序的输出结果为:<BR>Constructing with 5.<BR>Display with 5.<BR>Destructing.<BR>Destructing.<BR><BR>其中display()按值调用参数,<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>回复者:啊志 回复日期:2003-03-12 22:44:52
<br>内容:编译器为你自动实现了拷贝构造函数,功能是复制对象本身的每一个位<BR><BR>当调用函数的时候,对象作为实参传值,这个时候调用了拷贝构造函数(而非你定义的普通构造函数)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tjhe 回复日期:2003-03-12 22:48:19
<br>内容:创建对象副本时调用的是默认拷贝构造函数,即如:<BR>TEST(const TEST&amp; t)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=t.value;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:kard_king 回复日期:2003-03-12 22:57:11
<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 + -