+ -
当前位置:首页 → 问答吧 → 关于构造拷贝函数的使用和析构函数的调用问题,代码和运行结果如下:

关于构造拷贝函数的使用和析构函数的调用问题,代码和运行结果如下:

时间:2011-12-22

来源:互联网

#include "stdafx.h"
#include<iostream>
using namespace std;
class Clock{
private:
int H,M,S;
public:
Clock(int h=0,int m=0,int s=0){
H=h,M=m,S=s;
cout<<"constructor:"<<H<<":"<<M<<":"<<S<<endl;
}
~Clock(){
cout<<"destructor:"<<H<<":"<<M<<":"<<S<<endl;
}
Clock(Clock &p){
cout<<"copy constructor,before call:"<<H<<":"<<M<<":"<<S<<endl;
H=p.H;
M=p.M;
S=p.S;
}
void Showtime(){
cout<<H<<":"<<M<<":"<<S<<endl;
}

};
Clock fun(Clock C)
{
return C;
}
int main(){
Clock C1(8,0,0);
Clock C2(9,0,0);
Clock C3(C1);
fun(C2);
Clock C4;
C4=C2;
system("pause");
return 0;


}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}


作者: xkillercn   发布时间: 2011-12-22

为什么未调用C1,C2,C3,C4的析构函数???

作者: xkillercn   发布时间: 2011-12-22

C/C++ code

int main()
{
   {
      Clock C1(8,0,0);
      Clock C2(9,0,0);
      Clock C3(C1);
      fun(C2);
      Clock C4;
      C4=C2;
      system("pause");
      return 0;

    }//这样试试
}


作者: Demon__Hunter   发布时间: 2011-12-22

引用 2 楼 demon__hunter 的回复:


明显要这样啊:
C/C++ code
int main()
{
    {
        Clock C1(8,0,0);
        Clock C2(9,0,0);
        Clock C3(C1);
        fun(C2);
        Clock C4;
        C4=C2;
    }

    system("pause");

    return 0;
}

作者: yisikaipu   发布时间: 2011-12-22

引用 1 楼 xkillercn 的回复:为什么未调用C1,C2,C3,C4的析构函数???


因为return之后才调用析构,这时候cout已经收不到了,要想收到,给个花括号,显式让它们出作用域而析构

作者: yisikaipu   发布时间: 2011-12-22

热门下载

更多