📄 subject_27599.htm
字号:
<p>
序号:27599 发表者:模糊 发表日期:2003-01-13 20:01:43
<br>主题:一个关于拷贝初始化构造函数的调用问题!谢谢!
<br>内容:class TPoint<BR> {<BR> public:<BR> TPoint(int x, int y) {X=x; Y=y;}<BR> TPoint(TPoint & p);<BR> ~TPoint() {cout<<"析构函数被调用。\n";}<BR> int Xcoord() {return X;}<BR> int Ycoord() {return Y;}<BR> private:<BR> int X, Y;<BR> };<BR><BR> TPoint::TPoint(TPoint & p)<BR> {<BR> X = p.X;<BR> Y = p.Y;<BR> cout<<"拷贝初始化构造 函数被调用。\n";<BR> }<BR><BR>#include <iostream.h><BR>#include "tpont.h" //类的定义放于该文件中<BR> TPoint f(TPoint Q);<BR> void main()<BR> {<BR> TPoint M(20, 35),P(0, 0);<BR> TPoint N(M);<BR> P = f(N);<BR> cout<<"P="<<p.Xcoord()<<","<<P.Ycoord()<<endl;<BR> }<BR><BR> TPoint f(TPoint Q)<BR> {<BR> cout<<"ok\n";<BR> int x, y;<BR> X = Q.Xcoord()+10;<BR> Y = Q.Ycoord()+20;<BR> TPoint R(x, y);<BR> return R;<BR> }<BR><BR>最后的结果是:<BR>拷贝初始化构造 函数被调用。<BR>拷贝初始化构造 函数被调用。<BR>OK<BR>拷贝初始化构造 函数被调用。<BR>析构函数被调用。<BR>析构函数被调用。<BR>*************析构函数被调用。****************<BR>P=30,55<BR>析构函数被调用。<BR>析构函数被调用。<BR>析构函数被调用。<BR><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>回复者:tjhe 回复日期:2003-01-13 20:19:01
<br>内容:return R;<BR>通过临时对象返回,即P = f(N);调用返回是R拷贝给临时对象,临时对象拷贝给P,<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>
回复者:模糊 回复日期:2003-01-13 20:46:16
<br>内容:但是我总结的赋值正好有六个:<BR>TPoint M(20,35),P(0,0);<BR>TPoint N(M);<BR>TPoint Q(N);<BR>TPoint R(x,y);<BR>TPoint P(R);<BR>正好用六个析构来释放!这中间没有临时对象啊!!我把P看作是重载的!不知道对不对!!谢谢!!
<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-01-13 22:08:45
<br>内容:TPoint f(TPoint Q);返回的方式是值返回方式,函数调用返回是R拷贝给一个系统建立的临时对象,再将临时对象拷贝给接收者P。这是值返回方式得特点。<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 + -