| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1144 人关注过本帖, 1 人收藏
标题:为什么是这个结果呢,哪位哥哥给解决一下
取消只看楼主 加入收藏
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
收藏(1)
 问题点数:0 回复次数:2 
为什么是这个结果呢,哪位哥哥给解决一下
#include<iostream.h>
class test{
private: int num;
public:
    
    test(int);
    void print();
~test();
};
test ::test(int n){num=n;cout<<"Initializing "<<num<<endl;}
void test::print(){cout<<num<<endl;}
test::~test(){cout<<"destrongin "<<num<<endl;}
void main(){
    test a(0);
    a=1;
    a.print();
    a=3;
    a.print();
    a=test(5);
    a.print();
}

结果是
Initializing  0
Initializing   1
destrongin   1
1
Initializing  3
destrongin   3
3
Initializing  5
destrongin   5
5
destrongin   5
很不明白,为什么这样,大师能否给解释一下

这个答案是对的,但是我不明白,为什么  构造完以后,马上就析构,我并没有调析构函数啊,而且啊,为什么都已经析构了,还能够用成员函数输出数据成员的值!  比如:
Initializing 1
destrongin 1
1

为什么第一个构造函数和最后一个析构函数对应,初始化为0以后不是,被改成1了么?怎么最后还要析构一个5呢?然后就给改成3,又是 5,而且这里还出现了赋值,给对象赋值,后来呢,不是赋值了,变成初始化了,总之,我都晕了!

请问这里一共建立了几个对象,为什么对象被析构了,还可以输出其中数据成员的值呢?另外这句话a=3,是什么意思,是重新建立一个对象呢,还是对上一个对象改变成员值呢?我还没有见过这样使用的呢,这里给一个数据成员赋值么?如果我有2个数据成员,那又给谁赋值啊?

[[it] 本帖最后由 junpeng1 于 2008-9-9 15:07 编辑 [/it]]
搜索更多相关主题的帖子: 结果 
2008-09-08 20:54
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
收藏
得分:0 
这个答案是对的,但是我不明白,为什么  构造完以后,马上就析构,我并没有调析构函数啊,而且啊,为什么都已经析构了,还能够用成员函数输出数据成员的值!  比如:
Initializing 1
destrongin 1
1

为什么第一个构造函数和最后一个析构函数对应,初始化为0以后不是,被改成1了么?怎么最后还要析构一个5呢?然后就给改成3,又是 5,而且这里还出现了赋值,给对象赋值,后来呢,不是赋值了,变成初始化了,总之,我都晕了!

请问这里一共建立了几个对象,为什么对象被析构了,还可以输出其中数据成员的值呢?另外这句话a=3,是什么意思,是重新建立一个对象呢,还是对上一个对象改变成员值呢?我还没有见过这样使用的呢,这里给一个数据成员赋值么?如果我有2个数据成员,那又给谁赋值啊?

[[it] 本帖最后由 junpeng1 于 2008-9-9 15:07 编辑 [/it]]
2008-09-09 14:28
junpeng1
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-8
收藏
得分:0 
8楼说的对,我有这个疑问!

晕死了,涉及到临时对象,还有转换函数,我得好好看看书
2008-09-09 20:07
快速回复:为什么是这个结果呢,哪位哥哥给解决一下
数据加载中...
 
   



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

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