实在是搞不明白!各位帮忙看一下,分有的是!!!

hfyd 2003-07-10 11:02:42
#include "stdafx.h"
#include<iostream.h>
class Sample
{
int x,y;
public:

Sample(){x=y=0;}
Sample(int a,int b) {x=a;y=b;}
void disp()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};
void main()
{Sample *p=new Sample;
Sample s(2,3),*P=&s; //为何要用逗号分割呢
p->disp();
}

书上说答案应该是x=2,y=3

但实际运行结果是x=0,y=0

说明“*P=&s”没起作用啊!应该怎样才能使*p调用用参数的那个构造函数呢
还有就是“Sample s(2,3),*P=&s;”为什么不能用“;”分割而用“,”呢?
...全文
30 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
titainium 2003-07-10
  • 打赏
  • 举报
回复
Sample s(2,3),*P=&s;

我就不多说什么了,自己好好看看吧。
magic007 2003-07-10
  • 打赏
  • 举报
回复
p的大小写问题。输出的是*p=new Sample;那个p
sam1111 2003-07-10
  • 打赏
  • 举报
回复
如果用;分隔,那么P就变成未定义了
livewithc 2003-07-10
  • 打赏
  • 举报
回复
up
collecting 2003-07-10
  • 打赏
  • 举报
回复
^_^
sunzi2001 2003-07-10
  • 打赏
  • 举报
回复
做程序员一定得擦亮眼睛。OK。
xueqt 2003-07-10
  • 打赏
  • 举报
回复
要注意delete
zteliubin 2003-07-10
  • 打赏
  • 举报
回复
up

^_^
idontlikenickname 2003-07-10
  • 打赏
  • 举报
回复


Sample s(2,3),*P=&s;
应该用逗号分割,就像其他的变量定义一样.比如int a, *pa;

在c/c++中是有大小写区分的你的小写p动态生成了一个Sample对象,调用的是它的缺省构造函数,x和y都是0,所以p->disp()显示x=0,y=0.你的大写的P实际是有效果的,你运行一下P->disp()显示的就是x=2,y=3~

point_to 2003-07-10
  • 打赏
  • 举报
回复
是大小写的问题!
new的是小p,输出的也是小p,p->disp();所以结果 0 0
Sample s(2,3),*P=&s; //为何要用逗号分割呢--定义一个对象和一个指针,int i,j,*pi=&i;一个道理!
这是大P,定义一个Sample指针,(付初值,指向的是s而已 )
Octogen 2003-07-10
  • 打赏
  • 举报
回复
大哥!你main()里面那句“*P=&s”是个大写的P,成了新定义的变量。
下面那个小写的p是new出来的,没任何参数,当然是0,0了。
而且还没delete,内存泄漏。
zteliubin 2003-07-10
  • 打赏
  • 举报
回复
要重载=吧

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧