这个小程序哪地方错了得不出正确结果

laraya 2008-11-12 07:01:39
#include <iostream.h>
class student
{
public:
student(int studentno=0)
{
noofstudent=1;
studentno=1100+noofstudent;
}
int get()
{
return studentno;
}
private:
int noofstudent;
int studentno;
};
void main()
{
student s1;
cout<<s1.get()<<endl;

}
我想打印出学好1101,为什么结果不正确是个很大的负数,我看不出哪地方错了啊。



...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvjt86 2008-11-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xhs_lh04 的回复:]
student(int studentno=0)
{
noofstudent=1;
studentno=1100+noofstudent;
}
此处是函数局部变量,而不是你的类成员变量,所以你的类成员变量未初始化
[/Quote]
#include <iostream.h>
class student
{
public:
student(int studentno=0)
{
noofstudent=1;
studentno=1100+noofstudent;
cout<<studentno<<endl;
}
int get()
{
return studentno;
}
private:
int noofstudent;
int studentno;
};
void main()
{
student s1;


}
hefeng1000 2008-11-12
  • 打赏
  • 举报
回复
单步调试 能解决很多问题 也能发现很多问题 一个很好的方法
太乙 2008-11-12
  • 打赏
  • 举报
回复
呵呵,jf~~~~~~
moolf 2008-11-12
  • 打赏
  • 举报
回复
你设置断点调试下会更加明白,studentno的10011的值没有传到return studentno那里去。
直接不用形参就不会出问题了。
laraya 2008-11-12
  • 打赏
  • 举报
回复
好的明白的
原因是我用的形参出问题了,形参覆盖了类的私有成员变量studentno;
把形参studentno换成任意变量就没错了
谢谢楼上的回答。
xhs_lh04 2008-11-12
  • 打赏
  • 举报
回复
student(int studentno=0)
{
noofstudent=1;
studentno=1100+noofstudent;
}
此处是函数局部变量,而不是你的类成员变量,所以你的类成员变量未初始化
loveapple1 2008-11-12
  • 打赏
  • 举报
回复
student(int studentno=0)
{
noofstudent=1;
studentno=1100+noofstudent;
}

这个函数,函数局部变量覆盖了类的私有变量。
所以你输出的是没有经过赋值的类私有变量
laraya 2008-11-12
  • 打赏
  • 举报
回复
我试了下,
发现在内敛构造函数里面如果加上cout<<studentno;是可以输出1101的,
说明这时候初始化不是成功了吗,
为什么在get()函数里面得不到结果呢?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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