#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
int age;
char *name;
public:
Student(int m,char *n);
Student();
~Student();
void SetMember(int m,char *n);
int GetAge();
char *GetName();
};
Student::Student(int m,char *n)
{
age=m;
if(n)
{
name=new char[strlen(n)+1];
strcpy(name,n);
}
}
Student::Student()
{
age=0;
name="unnamed";
}
Student::~Student()
{
cout<<"Destructor called."<<endl;
delete []name;
}
int Student::GetAge()
{
return age;
}
char *Student::GetName()
{
return name;
}
void Student::SetMember(int m,char *n)
{
age=m;
if(n)
{
name=new char[strlen(n)+1];
strcpy(name,n);
}
else name=0;
}
int main()
{
Student stu[3]={Student(13,"wang")};
stu[2].SetMember(12,"zhang");
cout<<stu[0].GetAge()<<","<<stu[0].GetName()<<endl;
cout<<stu[1].GetAge()<<","<<stu[1].GetName()<<endl;
cout<<stu[2].GetAge()<<","<<stu[2].GetName()<<endl;
return 0;
}
题目要求是:
定义一个学生类 Student ,设计私有数据成员:
年龄 int age;
姓名 char *name;
公有成员函数:
构造函数 带参数的构造函数 Student ( int m,char *n ) ;
不带参数的构造函数 Student ( ) ;
析构函数 ~ Student ( ) ;
释放由 name 申请的动态空间
改变数据成员值函数 void SetMember ( int m,char *n ) ;
获取数据成员函数 int Getage ( ) ;
char *Getname ( ) ;
在 main ( ) 中定义一个有 3 个元素的对象数组并分别初始化,然后输出对象数组的信息,
main 函数的部分内容如下:
int main ( )
{
Student stu[3]={Student(13,“wang”);
……
}
// 第一个元素调用带能构造函数初始化
// 第二、三个元素由无参构造函数初始化,默认年龄为 0 ,姓名为unnamed;
//stu[2]. SetMember ( 12,"zhang“ ) ;
// 修改第三个元素的数据成员值
呼如林