中国地质大学(武汉)C++编程声明一个学生类CStudent以及一个点类CRange
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象与程序设计》
C++实习报告
中国地质大学(武汉)
工程学院
2014年5月29日
老师:曹弘
班级:052126
姓名:方日忠
学号:20121002220
实验一:
构造一个学生类CStudent,要求如下:
1、具有两个保护的成员:姓名和学号
2、实现带参数的构造函数,在构造函数中输出“带参构造函数被
调用”
3、实现拷贝构造函数,在其中输出“拷贝构造函数被调用”
4、实现析构函数,在析构函数中输出“析构函数被调用”
5、在类的外部,声明一个全局函数void PrintInfo(CStudent
stu);实现对学生信息的输出
6、在main中声明CStudent的对象,并利用PrintInfo实现对它
的调用
实验思路:
首先定义的一个外部函数,用于输入个人信息,如姓名和学号。主函数中用#include "Student.h"来调用外部函数,本实验中分别通过析构函数,拷贝构造函数以及带参构造函数的调用以及信息的输出。
外部main函数:
#include
#include "Student.h"
using namespace std;
int main()
CStudent pp("方日忠","20121002220");
PrintInfo(pp);
return 0;
}
程序代码:
#include "Student.h" //包含外部函数#include
#include
using namespace std;
CStudent::CStudent() //构造函数的定义{
cout<<"构造函数被调用!"<<’\n”< } CStudent::~CStudent() //析构函数的定义{ cout<<"姓名: "< cout<<"学号: "< cout<<"析构函数被调用!"<<’\n”< CStudent::CStudent(char s1[20],char s2[20]) //构造函数的实现{ strcpy(name,s1); strcpy(ID,s2); cout<<"姓名: "< cout<<"学号: "< cout<<"带参数的构造函数被调用!"<<’\n”< } CStudent::CStudent(const CStudent &p) //拷贝构造函数的实现 { strcpy(name,); //将字符串复制到字符串name中strcpy(ID,p.ID); //将字符串p.ID复制到字符串ID中 cout<<"姓名: "< cout<<"学号: "< cout<<"拷贝构造函数被调用!"<<’\n”< } void PrintInfo(CStudent stu) //利用PrintInfo实现对main中声明CStudent的对象的调用 { cout<<"姓名: "<<< cout<<"学号: "< 运行截图: 实验二: 声明一个点类CRange,要求如下: 1、具有两个保护类型的数据成员:width和height 2、实现带参数的构造函数、拷贝构造函数 程序代码: #include class CRange //定义类CRange { public: CRange(int wid, int hei) //声明类的成员函数 { width= wid; height= hei; cout<<"使用构造函数,进行对象的创建!"< cout<<"width:"< } //输出width和height CRange(CRange&rng) //这里是自定义的拷贝构造函数 { width = rng.width; height= rng.height; cout<<"使用拷贝构造函数,进行对象的复制!"< cout<<"width:"< } //输出width和height protected: //声明类的数据成员width和height int width; //定义宽度 int height; //定义高度 }; void main() { CRange a(10,10); //调用有参数的构造函数 CRange b=a; //通过调用拷贝构造函数,用对象a对对象b进行复制 } 运行截图: 实验总结: 通过本次实习的内容,加深了对类与对象定义的的理解,掌握了对类成员的访问控制,对访问控制权限的3种类型,有了更加熟练的运用。另外掌握并运用构造函数、析构函数以及拷贝构造函数,他们都是特殊的成员函数。 构造函数主要用于在对象创建时,为对象分配内存空间,进行初始化,构造函数可以有参数,也可以没有参数。 析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载性,只有在类对象的生命周期结束的时候,由系统自动调用。 拷贝构造函数的作用是,当用一个对象去初始化同类的另一个对象时惊醒初始化复制,在每一个类中都必须有一个拷贝构造函数。