class student
{
char *name;
int I;
public:
student()
{
I=0;
name=new char[I+1];
}
student(char *s)
{
I=strlen(s);
name=new char[I+1];
strcpy(name,s);
}
void display()
{
cout<<name<<endl;
}
void manipulate(student &a,student &b)
{
I=a.I+b.I;
delete name;
name=new char[I+1];
strcpy(name,a.name);
strcpy(name,b.name);
}
};
void main()
{
clrscr();
char *temp="Jack";
student name1(temp),name2("Jill"),name3("John"),S1,S2;
S1.manipulate(name1,name2);
S2.manipulate(S1,name3);
S1.display();
S2.display();
getch();
}
我多次计算此代码的输出但无法理解。 此代码的输出是:Jill newline John
答案 0 :(得分:0)
可能你想在操作函数中使用strcat而不是第二个strcpy。
答案 1 :(得分:0)
你的问题在这里:
的strcpy(姓名,a.name); 的strcpy(姓名,b.name);
将Jack + null复制到名称的前五个字节中,然后第二个strcpy将Jill复制到相同的字节上。然后在第二种情况下,同样将John复制到初始字节上。
您可能想使用strcat?