for循环体中定义的变量的生存期

     在for的循环体中定义的non-static对象,其生存期仅限于一次循环迭代,即在本次循环结束时,对象会被自动销毁。

    试验代码如下:

#include  < iostream >
using   namespace  std;

class  A
{
public:
    A()
{cout<<"in ctor of A"<<endl;}
    A(A
&){cout<<"in copy ctor of A"<<endl;}
    
~A(){cout<<"in dtor of A"<<endl;}

}
;

int  main( int  argc, char   *  argv[])
{
    
    A x;
    cout
<<"before loop"<<endl<<endl;

    
for (int i=0;i<3;i++)
    
{
     A a
=x;

    }

    cout
<<endl<<"after loop"<<endl;

    
return 1;
}

程序的运行结果为

in  ctor of A
before loop

in  copy ctor of A
in  dtor of A
in  copy ctor of A
in  dtor of A
in  copy ctor of A
in  dtor of A

after loop
in  dtor of A

你可能感兴趣的:(Class,iostream)