运行时 请多指教

Neo824 2003-07-26 09:45:55

编译 连接通过了 但运行时没有结果
请多多指教 先行谢过!!
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>


class Person
{
public:
Person(char n[20]=" ",char c[20]=" ",char a[20]=" ",char celluar[20]=" ",char p[20]=" ")
{
for(int i=0;i<20;i++)
{
name[i]=n[i];
company[i]=c[i];
address[i]=a[i];
celluar[i]=c[i];
phone[i]=p[i];
}


}
void display(ostream& out)
{
out<<setw(10)<<name<<company
<<address<<celluar<<phone
<<endl;
}
private:
char name[20];
char company[20];
char address[30];
char celluar[10];
char phone[10];
};
ostream& operator<<(ostream& out,Person& ps)
{
ps.display(out);
return out;
}

void main()
{
ofstream out("c:\\phonebook",ios::ate);
Person Jame("Jame","Intel","NY","139...","2894541");
Person Mike("Mike","Intel","NY","139...","2894541");
out<<Jame;
out<<Mike;
cout<<Jame;
cout<<Mike;
}
...全文
28 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Neo824 2003-07-27
  • 打赏
  • 举报
回复
晨星
接QQ:147828874
我的网名叫Neo
加我时别忘了注明晨星!
Neo824 2003-07-27
  • 打赏
  • 举报
回复
多谢各位了
晨星 2003-07-26
  • 打赏
  • 举报
回复
1。函数参数相当于局部变量,因此它覆盖了同名的成员变量,但不会导致编译错误。况且你原来的程序根本没有引用cellulor变量。
2。怎么不至于?数组越界经常引发内存错误,即使不引发,也很危险,我用VC编译并执行就发生了内存错误。
Neo824 2003-07-26
  • 打赏
  • 举报
回复
1。原来有个参数“cellulor”跟某个成员变量同名,从而引出了问题。
2。你原来使用for语句来拷贝字符串,但你构造对象时传入的字符串长度都不到20,
这不是典型的数组越界吗?
第一处错误为什么没在编译的时候发现呀?
第二处错误不至于影响运行吧?
chinazcw 2003-07-26
  • 打赏
  • 举报
回复
呵呵,有好戏瞧哦~~

找个好位置,慢慢的瞧~~
晨星 2003-07-26
  • 打赏
  • 举报
回复
(:
晨星 2003-07-26
  • 打赏
  • 举报
回复
晕!性别?
Neo824 2003-07-26
  • 打赏
  • 举报
回复
这么快啊
下楼煮袋面的工夫
谢谢你呀 晨星
顺便说一句 我爱上你了:)
晨星 2003-07-26
  • 打赏
  • 举报
回复
问题不少。

#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>

class Person
{
public:
Person(char n[20]=" ",char c[20]=" ",char a[20]=" ",char cell[20]=" ",char p[20]=" ")
//原来有个参数“cellulor”跟某个成员变量同名,从而引出了问题。
{
// for(int i=0;i<20;i++)
// {
// name[i]=n[i];
// company[i]=c[i];
// address[i]=a[i];
// celluar[i]=c[i];
// phone[i]=p[i];
// }
//你原来使用for语句来拷贝字符串,但你构造对象时传入的字符串长度都不到20,这不是典型的数组越界吗?
strcpy(name , n);
strcpy(company , c);
strcpy(address , a);
strcpy(celluar , cell);
strcpy(phone , p);
}
void display(ostream& out)
{
out<<setw(10)<<name<<company
<<address<<celluar<<phone
<<endl;
}
private:
char name[20];
char company[20];
char address[30];
char celluar[10];
char phone[10];
};
ostream& operator<<(ostream& out,Person& ps)
{
ps.display(out);
return out;
}

void main()
{
ofstream out("c:\\phonebook",ios::ate);
Person Jame("Jame","Intel","NY","139...","2894541");
Person Mike("Mike","Intel","NY","139...","2894541");
out<<Jame;
out<<Mike;
cout<<Jame;
cout<<Mike;
}

69,373

社区成员

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

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