注册 登录
编程论坛 C++教室

析构函数的实现问题,求指教

晴天一阵 发布于 2011-09-08 22:45, 383 次点击
#include<iostream>
using namespace std;
int count=0;
class alpha
{
public:
    alpha()
只有本站会员才能查看附件,请 登录

    {
        count++;
        cout<<"\nNO.of object destroyde"<<count;
    }
    ~alpha()
    {
        cout<<"\nNO.of object destroyed"<<count;
    count--;
    }
};
int main()
{
    cout<<"\n\nENTER MAIN\n";
        alpha A1,A2,A3,A4;

    {
        cout<<"\n\nENTER BLOCK1\n";
        alpha A5;
    }
    {
        cout<<"\n\nENTER BLOCK2\n";
            alpha A6;
    }
    cout<<"\n\nRE-ENTER MAIN\n";
    return 0;
}
对象A1,A2,A3,A4生成后为什么不是当场销毁,而是等到A5,A6销毁后才销毁的。。。
2 回复
#2
hoho5682011-09-08 23:17
对象A1,A2,A3,A4是在你的函数main()里面声明的,它的作用域是整个函数,只有整个函数结束的时候才会销毁;
而A5,A6是在局部变量(对象),在{}出来之后就会销毁。
作用域的关系啊。。。怎么A1-A4怎么可能声明玩就销毁呢。。要是你后面用到咋办。。
#3
newenter2011-09-09 15:36
{
    cout<<"\n\nENTER BLOCK1\n";
    alpha A5;
 }
{
    cout<<"\n\nENTER BLOCK2\n";
      alpha A6;
}
A5,A6他们的生存周期就是在两对大括号之间。所以会先析构
1