写一个关于学生的动态数组类
其中还卡了一会儿,因为直接调用了封装好的动态数组类中的private成员不自知,卡了好久。。注意细节吧
#include <bits/stdc++.h>
using namespace std;
class student
{
private:
int age;
string name;
string major;
public:
student()
{
name="none";
age=-1;
major="none";
printf("constructor called\n");
}
student(int sa,string sname,string smajor)
{
printf("constructor called\n");
age=sa;
name=sname;
major=smajor;
}
void setinfo(int sa,string sname,string smajor)
{
age=sa;
name=sname;
major=smajor;
}
void display()
{
cout<<"Student's name: "<<name<<endl;
printf("age: %d \n",age);
printf("Major: ");
cout<<major<<endl;
}
string getname()
{
return name;
}
void setname(string nn)
{
name=nn;
}
string getmajor()
{
return major;
}
void changemajor(string t)
{
major=t;
}
~student()
{
printf("DESTRUCTOR CALLED!\n");
}
};
class arrayofstu
{
public:
arrayofstu(int ssize):_size(ssize)
{
stu1=new student[_size];
}
~arrayofstu()
{
printf("deleting....\n");
delete[] stu1;
}
student &element(int t)
{
assert(t>=0&&t<_size);
return stu1[t];
}
private:
student *stu1;
int _size;
};
int main()
{
int count1;
printf("please enter the number of student:\n");
cin>>count1;
arrayofstu _stu(count1);
printf("please enter the info of each student\n");
for(int i=0; i<count1; i++)
{
int age;
string name;
string major;
cin>>name>>age>>major;
_stu.element(i).setinfo(age,name,major);
}
printf("please enter the no. and the new major of student who want to change major\n");
string t;
int p;
cin>>p>>t;
_stu.element(p-1).changemajor(t);
_stu.element(p-1).display();
return 0;
}