用C++构造一个学生类。
有以下几个基本的要求:1、这个类的每一个对象可以包含多个学生(学生的人数不确定)。
2、这个类有三种类型的构造函数:缺省构造函数、带参数的构造函数、拷贝构造函数
追问:对,题目没有错的。原题是这样:构造一个学生类,要求:
1、这个类的每一个对象可以包含多个学生(学生的人数不确定);
2、这个类有三种类型的构造函数:缺省构造函数、带参数的构造函数、拷贝构造函数。、
追问:对,题目没有错的。原题是这样:构造一个学生类,要求:
1、这个类的每一个对象可以包含多个学生(学生的人数不确定);
2、这个类有三种类型的构造函数:缺省构造函数、带参数的构造函数、拷贝构造函数。、
答案:以下是代码:
c++ vc6.0或7.0下代码是
#include <iostream>
#include <string.h>
using namespace std;
//构造学生类 属性有:学号,姓名,年龄,性别,班级号
class CStudent
{
public: //公有类型声明
char strName[12]; //姓名
char strStuNO[9]; //学号
unsigned int age; //年龄
bool isman; //性别
void SetScore(float s1,float s2,float s3)
//成员函数,设置三门课成绩
{
fScore[0]=s1;
fScore[1]=s2;
fScore[2]=s3;
}
float GetAverage(); //均分
CStudent(char str[9]) //第一个构造函数
{
strcpy(strStuNO,str);
}
CStudent(char str[9],char Name[12]) //第二个构造函数
{
strcpy(strStuNO,str);
strcpy(strName,Name);
}
//利用下面构造函数初始化年龄为18
CStudent(unsigned int IN_age) //第三个构造函数,
{
age=IN_age;
}
friend unsigned long int CIn(CStudent &CStu );
private:
float fScore[3];
enum{ClassNum = 20080715 };
//static const unsigned long int ClassNum=20080715;
//班级号:你可以自己修改2008级07系15班,嘎嘎
//将上面数字改一下
};
float CStudent::GetAverage()
{
return (float)((fScore[0]+fScore[1]+fScore[2])/3.0);
}
unsigned long int CIn(CStudent &CStu )
{unsigned long int n;
n=CStu.ClassNum;
return n;
}
void main()
{
const unsigned long int ClassNum=20080715;
unsigned long int n;
int AgeIn;
char str1[9];
char str2[9],strN[12];
cout<<"*****************************************************"<<endl;
cout<<"** C++学生类的构造 **"<<endl;
cout<<"*****************************************************"<<endl;
//以下是调用,为简化问题,只输入三个同学
cout<<"调用一个参数的构造函数,请输入学号:"<<endl;
cin>>str1;
CStudent Onestu(str1);
cout<<"你输入的学号为:"<<str1<<endl;
cout<<"第一位同学信息建立啦!"<<endl;
system("pause");
//第二个同学信息
cout<<"调用两个参数的构造函数,请输入学号:"<<endl;
cin>>str2;
cout<<"请输入姓名:"<<endl;
cin>>strN;
CStudent Twostu(str2,strN);
cout<<"你输入的学号为:"<<str2<<endl;
cout<<"你输入的姓名为:"<<strN<<endl;
cout<<"第二位同学信息建立啦!"<<endl;
system("pause");
//初始化年龄为18
cout<<"你可以输入年龄,建立以年龄为参数的对象:"<<endl;
cout<<"请输入年龄(比如18岁):";
cin>>AgeIn;
CStudent Thrstu(AgeIn);
cout<<"第三位同学信息建立啦!"<<endl;
cout<<"他(她)的年龄为:"<<Thrstu.age<<"岁"<<endl;
n=CIn(Onestu);
cout<<"友元函数声明他们的班级为:"<<n<<endl;
cout<<"*****************************************************"<<endl;
cout<<"** 谢谢使用 **"<<endl;
cout<<"*****************************************************"<<endl;
system("pause");
}
vc2005版本稍微有些不同:
#include <iostream>
#include <string.h>
using namespace std;
//构造学生类 属性有:学号,姓名,年龄,性别,班级号
class CStudent
{
public: //公有类型声明
char strName[12]; //姓名
char strStuNO[9]; //学号
unsigned int age; //年龄
bool isman; //性别
void SetScore(float s1,float s2,float s3)
//成员函数,设置三门课成绩
{
fScore[0]=s1;
fScore[1]=s2;
fScore[2]=s3;
}
float GetAverage(); //均分
CStudent(char str[9]) //第一个构造函数
{
strcpy_s(strStuNO,str);
}
CStudent(char str[9],char Name[12]) //第二个构造函数
{
strcpy_s(strStuNO,str);
strcpy_s(strName,Name);
}
//利用下面构造函数初始化年龄为18
CStudent(unsigned int IN_age) //第三个构造函数,
{
age=IN_age;
}
friend unsigned long int CIn(CStudent &CStu );
private:
float fScore[3];
static const unsigned long int ClassNum=20080715;
//班级号:你可以自己修改2008级07系15班,嘎嘎
//将上面数字改一下
};
float CStudent::GetAverage()
{
return (float)((fScore[0]+fScore[1]+fScore[2])/3.0);
}
unsigned long int CIn(CStudent &CStu )
{unsigned long int n;
n=CStu.ClassNum;
return n;
}
void main()
{
unsigned long int n;
int AgeIn;
char str1[9];
char str2[9],strN[12];
cout<<"*****************************************************"<<endl;
cout<<"** C++学生类的构造 **"<<endl;
cout<<"*****************************************************"<<endl;
//以下是调用,为简化问题,只输入三个同学
cout<<"调用一个参数的构造函数,请输入学号:"<<endl;
cin>>str1;
CStudent Onestu(str1);
cout<<"你输入的学号为:"<<str1<<endl;
cout<<"第一位同学信息建立啦!"<<endl;
system("pause");
//第二个同学信息
cout<<"调用两个参数的构造函数,请输入学号:"<<endl;
cin>>str2;
cout<<"请输入姓名:"<<endl;
cin>>strN;
CStudent Twostu(str2,strN);
cout<<"你输入的学号为:"<<str2<<endl;
cout<<"你输入的姓名为:"<<strN<<endl;
cout<<"第二位同学信息建立啦!"<<endl;
system("pause");
//初始化年龄为18
cout<<"你可以输入年龄,建立以年龄为参数的对象:"<<endl;
cout<<"请输入年龄(比如18岁):";
cin>>AgeIn;
CStudent Thrstu(AgeIn);
cout<<"第三位同学信息建立啦!"<<endl;
cout<<"他(她)的年龄为:"<<Thrstu.age<<"岁"<<endl;
n=CIn(Onestu);
cout<<"友元函数声明他们的班级为:"<<n<<endl;
cout<<"*****************************************************"<<endl;
cout<<"** 谢谢使用 **"<<endl;
cout<<"*****************************************************"<<endl;
system("pause");
}
以下是运行结果:
*****************************************************
** C++学生类的构造 **
*****************************************************
调用一个参数的构造函数,请输入学号:
0803
你输入的学号为:0803
第一位同学信息建立啦!
请按任意键继续. . .
调用两个参数的构造函数,请输入学号:
0802
请输入姓名:
liming
你输入的学号为:0802
你输入的姓名为:liming
第二位同学信息建立啦!
请按任意键继续. . .
你可以输入年龄,建立以年龄为参数的对象:
请输入年龄(比如18岁):18
第三位同学信息建立啦!
他(她)的年龄为:18岁
友元函数声明他们的班级为:20080715
*****************************************************
** 谢谢使用 **
*****************************************************
请按任意键继续. . .一个学生类实例化出一个对象,这个对象代表一个学生,学生怎么能再包含学生??!再核对下题目,看是否有错。