对象的是怎么死的?

原创 2004年07月16日 13:45:00

一个对象构造了后,系统构造了后析构与否与编译器有关?

今天复习了C++语言,编了一个小程序。发现一个在对象构造了后,在VC6下面系统会自己调用该类的析构寒暑,而在Dev-C++(使用gcc)下面就不会调用?另外,如果建立的是对象的指针,那么系统是不会自己调用析构函数的。

代码如下:

#include

using namespace std;

class Counter
{

private:
    int elem;
public:
    Counter();
    Counter(int elem);
    ~Counter();
};

static int counter;

Counter::Counter()
{
    elem = 0;
    counter++;
    cout<<"in Counter()"< <endl;
    cout<<"counter = "<<endl;
}

Counter::Counter(int arg)
{
    elem = arg;
    counter++;
    cout<<"in Counter(int)"<<endl
    cout<<"counter = "<<endl;
}

Counter::~Counter()
{  
    counter--;
    cout<<"in ~Counter()"<<endl;
    cout<<"counter = "<<endl;
}

int main(int argc, char *argv[])
{
    Counter c1;
    Counter c2;
    Counter c3;
    Counter *cp = new Counter(10);
    cp->~Counter();
 
    return 0;
}

在VC6下的运行结果是:

in Counter()
counter = 1
in Counter()
counter = 2
in Counter()
counter = 3
in Counter(int)
counter = 4
in ~Counter()
counter = 3
in ~Counter()
counter = 2
in ~Counter()
counter = 1
in ~Counter()
counter = 0
Press any key to continue

而在Dev-C++种结果为:

in Counter()
counter = 1
in Counter()
counter = 2
in Counter()
counter = 3
in Counter(int)
counter = 4
in ~Counter()
counter = 3
Press any key to continue . . .

=================================

结论:

在对象的销毁阶段,是否调用析构函数,始于编译器有关的,而不是由语言定义的。所以在实际编程中,这一点对对象生命周期的控制的理解非常实用。:-)

如何判断对象已死(可杀之)

已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了:引用计数给对象添加一个引用计数器,每当有一个地方引用他,计算器就加1;当引用失效时,计数器减1;任何时刻计数器为0的对...
  • xixiaoming_A
  • xixiaoming_A
  • 2016-08-16 08:41:21
  • 316

java 如何判断对象已死

已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加1;当引用失效时,计数器减1;任何时...
  • fjkxyl
  • fjkxyl
  • 2017-04-11 14:50:37
  • 430

驴是怎么死的

驴耕田回来,躺在栏里,疲惫不堪地喘着粗气,狗跑过来看它。   “唉,老朋友,我实在太累了。”驴诉着苦,“明儿个我真想歇一天。”   狗告别后,在墙角遇到了猫。狗说:“伙计,我刚才去...
  • u013385252
  • u013385252
  • 2014-01-05 14:16:14
  • 277

驴”是怎么死的?

群里看到的,感觉很有体悟。   驴”是怎么死的?   驴耕田回来,躺在栏里,疲惫不堪地喘着粗气,狗跑过来看它。   “唉,老朋友,我实在太累了。”驴诉着苦,“明儿个我真想歇一天。”   狗告别...
  • sj349781478
  • sj349781478
  • 2017-07-01 13:38:02
  • 171

“牛”是怎么死的

牛是怎么死的?看懂了思想至少成熟30年!“牛”是怎么死的?这个故事很经典,寓意很深! 牛耕田回来,躺在栏里,疲惫不堪地喘着粗气,狗跑过来看它。 “唉,老朋友,我实在太累了。”牛诉着苦,“明儿个我真...
  • mingkiller
  • mingkiller
  • 2016-01-19 16:28:45
  • 104

李小龙是怎么死的?

李小龙之死揭秘: 一代功夫巨星李小龙先生英年早逝已经有三是个年头,然而期暴毙之因却是近代一迷。在网上,以及在很多报刊杂志上面恐怕大家都会看到,李小龙的死只是死于药物过敏而已,但其实并非如此简单的事情。...
  • JINGWUMEN22
  • JINGWUMEN22
  • 2008-04-02 19:33:00
  • 4462

项羽是怎么死的

项羽如果有一个开阔的心胸,能够理性的接受失败,并且从失败中吸取教训,凭借他的影响力,如果渡过乌江,回到江东,不能说没有一丝一毫的反盘机会,毕竟,他起义时,同样是凭借三千江南子弟兵,横扫天下。 可惜啊。...
  • yincheng01
  • yincheng01
  • 2016-02-18 23:19:58
  • 7115

诺基亚是怎么死的 几年了没有转过头来

我没有用过诺基亚的手机,我第一次用手机是东信的,什么和弦声,用一个星期,进水坏了,修要等于重新买一台了 于是买了一部索爱的,后来又买了多普达wm机用了几年,铵键不灵了,后来买了一台Qwert键盘的a...
  • uuq
  • uuq
  • 2011-11-14 16:19:14
  • 3641

JVM如何判断对象"死"和"活"

堆中存放着几乎所有的
  • yyywyr
  • yyywyr
  • 2014-09-15 23:55:40
  • 2132

牛是怎么死的原文+感想

原文转自:http://www.cnblogs.com/goto/p/4095047.html
  • miaozishao
  • miaozishao
  • 2014-11-13 15:38:26
  • 676
收藏助手
不良信息举报
您举报文章:对象的是怎么死的?
举报原因:
原因补充:

(最多只允许输入30个字)