| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:看下这个程序
只看楼主 加入收藏
心剑无痕
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-12-22
结帖率:85.71%
收藏
已结贴  问题点数:18 回复次数:2 
看下这个程序
#include<iostream>
using namespace std;
class test
{
public:
    test();
    test(int i,int j);
    ~test()
    {
        cout<<"Destructor called:"<<X<<','<<Y<<endl;
    }
    void set(int i,int j);
    void print()
    {
        cout<<X<<","<<Y<<endl;
    }
private:
    int X,Y;
};
test::test()
{
    X=Y=0;
    cout<<"Default constructor 2332312called"<<endl;
}
test::test(int i,int j)
{
    X=i;
    Y=j;
    cout<<"Constructorcalled:"<<X<<','<<Y<<endl;
}
void test::set(int i,int j)
{
    X=i;
    Y=j;
}
int main()
{
    test*ptr1,*ptr2,*ptr3;
    ptr1=new test(1,2);
    ptr2=new test(3,4);
    ptr3=new test[2];
    ptr3[0].set(5,6);
    ptr3[1].set(7,8);
    ptr1->print();
    ptr2->print();
    ptr3[0].print();
    ptr3[1].print();
    delete ptr1;
    delete ptr2;
    delete []ptr3;
    cin.get();
    cin.get();
    return 0;
}
在这个程序里运行结果是
Constructorcalled:1,2
Constructorcalled:3,4
Default constructor 2332312called
Default constructor 2332312called
1,2
3,4
5,6
7,8
Destructor called:1,2
Destructor called:3,4
Destructor called:7,8
Destructor called:5,6
为什么第三行会出现两次啊,我怎么觉得应该出现一次呢
搜索更多相关主题的帖子: test 
2010-02-23 09:26
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:9 

ptr3=new test[2];

两个对象啊!!!

★★★★★为人民服务★★★★★
2010-02-23 10:57
shiyuehai
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:96
专家分:116
注 册:2009-9-4
收藏
得分:9 
你不是动态开辟2个对象空间么,调用了2次构造函数啊
2010-02-23 11:19
快速回复:看下这个程序
数据加载中...
 
   



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

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