问一道指针对象的题目。
问题 D: 指针对象(类和对象实验二)时间限制: 1 Sec 内存限制: 128 MB
提交: 193 解决: 127
[提交][状态][讨论版]
题目描述
在前面章节内容里已经学习了数组和指针之间的关系,现在对象数组练习题的基础上,把对象数组改为对象指针重新实现同一功能,看看使用对象指针与普通类型指针有何不同?比如要构造三个学生类对象,只能使用指针动态分配方法实现(new 指令),最后,我们对初始化后的n个对象中的姓名字段属性按升序排序,输出排序后的各对象姓名属性,特别要注意的是对对象指针初始化需要注意什么(提示:可以在类外面定义一个方法,该方法的参数是对象指针/数组,对传入的对象按要求进行排序输出)。
输入
第一行输入需要n个测试对象
每行依次输入各对象的属性
输出
输出排好序后的对象姓名属性,每行一个
样例输入
2
Tom 男 2012222222 计算机学院 13333333333
John 男 2013333333 计算机学院 12444444444
样例输出
John
Tom
//------------------------
#include <iostream>
using namespace std;
class student{
char *name, *ID, *sex, *institute, *phone;
public:
void set_infor(char *name1, char *sex1, char *ID1, char *institute1, char *phone1)
{
name = name1;
ID = ID1;
sex = sex1;
institute = institute1;
phone = phone1;
}
char *getname(){
return name;
}
char *getID(){
return ID;
}
char *getsex(){
return sex;
}
char *getinstitute(){
return institute;
}
char *getphone(){
return phone;
}
void output(){
cout<<name<<endl;
}
};
int main ()
{
student *stu;
char name[100], ID[11], sex[3], institute[100], phone[12];
int i, n;
cin>>n;
stu = new student [n];
for (i = 0; i < n; i++)
{
cin>>name>>sex>>ID>>institute>>phone;
stu[i].set_infor(name, sex, ID, institute, phone);
}
for (i = 0; i < n; i++)
stu[i].output();
}
//-----------
用这代码输入
2
Tom 男 2012222222 计算机学院 13333333333
John 男 2013333333 计算机学院 12444444444
出现的结果却是
John
John
//--------------
为什么会这样??是不是set_infor函数里指针的赋值不正确??能否详细的解释一下??为什么set_infor里的指针会一直指向栈内存里的name1, sex1, ID1, institute1, phone1???
希望能详细解释下,谢谢了!!!