题目
//*******************************************************************************************************************
//*程序作者:冰糖
//*章 节:实验五
//*最后修改日期:2019年3月31日
//*题 目:
//实验目的
/*1) 掌握类的定义,根据具体要求设计类。能够根据类来创建对象。
2) 掌握拷贝构造函数的实现方法。
3) 掌握静态数据成员和静态函数的使用方法。
4) 理解友元的概念和掌握友元的使用方法。
5) 掌握对象数组、对象指针的使用方法。*/
// 1.
// 定义一个student类
// 包含成员变量姓名,年龄,学号
// 包含成员函数在屏幕上显示学生的姓名,年龄,学号
// 包含构造函数,对成员变量初始化
// 创建此类的对象,测试构造函数的调用
// 验证成员函数功能
// 2.
// 用多文件组织类(student.h,student.cpp, main.cpp),完成上述工作。
// 3.
// 在student类中重载构造函数,用多种方式对该类的对象初始化
// 测试构造函数的调用顺序
// 4.
// 向student类添加:
// 构造函数:实现动态内存分配
// 析构函数:释放已分配的内存
// 测试构造函数和析构函数的调用顺序
// 5.
// 定义一个课程类 (course.h, course.cpp)
// 包含课程名和该课程的学分
// 编写课程类的构造函数
// 编写课程类的拷贝构造函数
// 定义课程对象,测试构造函数和拷贝构造函数
//***********************************************************************************************************************8
main.cpp
#include<iostream>
using namespace std;
#include"student.h"
#include"student.cpp"
#include"course.h"
#include"course.cpp"
int main()
{
Student stu1;
Course cou1;
stu1.getInfo();
cou1.getInfo();
Student stu2(stu1);//*************************************用stu1初始stu2****************************************
Course cou2(cou1);//*************************************用cou1初始cou2****************************************
stu2.getInfo();
cou2.getInfo();
return 0;
}
student.cpp
#include"student.h"
#include<string.h>
#include<iostream>
using namespace std;
Student::Student()
{
cout<<"**********************************************************\n";
cout<<"请按提示输入学生信息:"<<endl;
cout<<"姓名:"<<endl;
cin>>name;
cout<<"年龄:"<<endl;
cin>>age;
cout<<"学号:"<<endl;
cin>>stuNum;
cout<<"调用student构造函数成功......"<<endl;
}
Student::Student(const Student &obj)
{
cout<<"**********************************************************"<<endl;
strcpy(name,obj.name);
age=obj.age;
stuNum=obj.stuNum;
cout<<"调用student拷贝构造函数......"<<endl;
}
void Student::getInfo()
{
cout<<"**********************************************************\n";
cout<<"学生基本信息如下:"<<endl;
cout<<"姓名:"<<name<<endl
<<"年龄:"<<age<<endl
<<"学号:"<<stuNum<<endl;
}
Student::~Student()
{
cout<<"**********************************************************\n";
//delete[] name;
cout<<"调用student析构函数成功......"<<endl;
}
student.h
#ifndef STUDENT_H
#define STUDENT_H
/*#include<iostream>
#include<string.h>
using namespace std;*/
class Student
{
private:
char name[20];
int age;
int stuNum;
public:
Student();
Student(const Student &obj);
void getInfo();
~Student();
};
#endif
course.cpp
#include"course.h"
#include<string.h>
#include<iostream>
using namespace std;
Course::Course()
{
cout<<"**********************************************************\n";
cout<<"请输入课程名:"<<endl;
cin>>course;
cout<<"请输入该门课程的成绩:"<<endl;
cin>>score;
cout<<"调用course构造函数......" <<endl;
}
Course::Course(const Course &obj)
{
cout<<"**********************************************************\n";
strcpy(course,obj.course);
score=obj.score;
cout<<"调用course拷贝构造函数......"<<endl;
}
void Course::getInfo()
{
cout<<"**********************************************************\n";
cout<<"课程相关信息如下:"<<endl
<<"课程名:"<<course<<endl
<<"分数:"<<score<<endl;
}
Course::~Course()
{
cout<<"**********************************************************\n";
cout<<"调用course析构函数......"<<endl;
}
course.h
#include"course.h"
#include<string.h>
#include<iostream>
using namespace std;
Course::Course()
{
cout<<"**********************************************************\n";
cout<<"请输入课程名:"<<endl;
cin>>course;
cout<<"请输入该门课程的成绩:"<<endl;
cin>>score;
cout<<"调用course构造函数......" <<endl;
}
Course::Course(const Course &obj)
{
cout<<"**********************************************************\n";
strcpy(course,obj.course);
score=obj.score;
cout<<"调用course拷贝构造函数......"<<endl;
}
void Course::getInfo()
{
cout<<"**********************************************************\n";
cout<<"课程相关信息如下:"<<endl
<<"课程名:"<<course<<endl
<<"分数:"<<score<<endl;
}
Course::~Course()
{
cout<<"**********************************************************\n";
cout<<"调用course析构函数......"<<endl;
}
运行结果