| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:[求助]为什么会是这样的结果?
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
 问题点数:0 回复次数:7 
[求助]为什么会是这样的结果?

#include <cstdlib>
#include <iostream>

using namespace std;

class point
{
public:
int x;
int y;

point(int x,int y);
~point();
void print();
};

point::point(int x,int y)
{
this->x=x;
this->y=y;
}

point::~point()
{
cout<<"Unload me"<<endl;
}

void point::print()
{
cout<<"x= "<<this->x<<endl;
cout<<"Y= "<<this->y<<endl;
}

int main(int argc, char *argv[])
{
point* xy=new point(10,10);
xy->print();
delete xy;
xy->print();
system("PAUSE");
return EXIT_SUCCESS;
}
/*
运行结果:
x= 10
y= 10
Unload me
x=0
y=10

为什么结果会是这样的呢,我预期的结果是:

x= 10
y= 10
Unload me
x=0
y=0

谢谢!
*/

搜索更多相关主题的帖子: 结果 
2007-06-15 11:32
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
为什么预期是
x= 10
y= 10
Unload me
x=0
y=0

结果并不能预期~

try new catch
2007-06-15 12:25
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-15 12:31
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
x= 10
Y= 10
Unload me
x= -572662307
Y= -572662307


这是用非dev-cpp运行的结果!
明白了吧!呵呵~

Fight  to win  or  die...
2007-06-15 12:49
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 

point::point(int x,int y)
{
this->x=x;
this->y=y;
}

// the above is not recommended. Use the initializer is the correct way
point::point(int x_,int y_) : x(x_), y(y_)
{
}


.....

delete xy;
xy->print();
// this should be undefined behavior, after your obj is destroyed.


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-06-15 13:49
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-15 14:30
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用aipb2007在2007-6-15 12:49:47的发言:
x= 10
Y= 10
Unload me
x= -572662307
Y= -572662307


这是用非dev-cpp运行的结果!
明白了吧!呵呵~

版主高明,知道我用的是dev-c,我真是笨死了,我有四五个编译器,乍地就不用它们试试看.
谢谢!


/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-15 14:43
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
C:\Documents and Settings\Administrator\My Documents\main.cpp In constructor `point::point(int, int)':
41 C:\Documents and Settings\Administrator\My Documents\main.cpp `x_' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
41 C:\Documents and Settings\Administrator\My Documents\main.cpp `y_' undeclared (first use this function)
C:\Documents and Settings\Administrator\My Documents\Makefile.win [Build Error] exe: *** [Objects/MingW/main.o] Error 1

HJin兄,你的代码我copy下载编译会出错,怎么回事?
错误指向这句:(上面的是出错提示)
point::point(int x_,int y_) : x(x_), y(y_)
{
}

/images/2011/147787/2011051411021524.jpg" border="0" />
2007-06-15 14:53
快速回复:[求助]为什么会是这样的结果?
数据加载中...
 
   



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

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