标题:析构函数的实现问题,求指教
只看楼主
晴天一阵
Rank: 2
等 级:论坛游民
帖 子:40
专家分:24
注 册:2011-5-21
结帖率:91.67%
已结贴  问题点数:10 回复次数:2 
析构函数的实现问题,求指教
#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销毁后才销毁的。。。
2011-09-08 22:45
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
得分:5 
对象A1,A2,A3,A4是在你的函数main()里面声明的,它的作用域是整个函数,只有整个函数结束的时候才会销毁;
而A5,A6是在局部变量(对象),在{}出来之后就会销毁。
作用域的关系啊。。。怎么A1-A4怎么可能声明玩就销毁呢。。要是你后面用到咋办。。
2011-09-08 23:17
newenter
Rank: 2
等 级:论坛游民
帖 子:3
专家分:15
注 册:2010-8-12
得分:5 
{
    cout<<"\n\nENTER BLOCK1\n";
    alpha A5;
 }
{
    cout<<"\n\nENTER BLOCK2\n";
      alpha A6;
}
A5,A6他们的生存周期就是在两对大括号之间。所以会先析构
2011-09-09 15:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349517-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137729 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved