四川师范大学 郭远华 信息与计算科学c++s实验(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与软件科学学院实验报告
学期:2016 至2017 第 2 学期 2017 年 4 月24 日
课程名称:面向对象的程序设计专业:信息与计算机科学
实验编号: 03 实验项目: C++类与对象
指导教师:郭远华 2015 级 5 班学号:2015060536
姓名:谢佳欣实验成绩:
一、目的要求
掌握C++中的基本类的定义。构造函数,静态成员,友元的特点。
二、实验内容
分析原因。
1.请说明C++中类和C中的结构体的异同。
类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存
类有构造和析构函数
类可以继承和被继承
结构:
结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象。
结构没有构造函数,但可以添加。结构没有析构函数
结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口;
结构体和类都是提供了数据的封装和构造
结构体主要是c语言的特色
类是c++的基本机制
结构体中的数据默认方式是public的,而类是private的
结构体不提供继承机制,类提供继承机制,实现代码复用
类可以实现多态,结构体不支持
2.改写下面的类
class student{
public:
void display()
{
cout<<”num”< cout<<”name”< } private: int num; //学号 float score; //考分 }; (1)在类体中添加2个构造函数,一个形参为空,一个带2个形参(2个形参分别对2个私有成员赋值)。在类中添加一个对数据成员赋值的公有成员函数set_value。在main()中用2个构造函数分别定义2个对象stu1、stu2。stu1引用set_value对自身私有成员进行设置。然后stu1、stu2引用display进行输出。 #include using namespace std; class student { public: student(){num=1,score=97.5;} student(int x,float y){num=x,score=y;} void display() { cout<<"num"< cout<<"score"< } void set_value(int x,float y); private: int num; //学§号? float score; //考?分? }; void student::set_value(int x,float y) { num=x+1; score=y; } void main() { student stu1,stu2(2,98); stu1.set_value(2,100.2); stu1.display(); stu2.display(); } 输出结果: (2)在main()中可以用student stu3(stu1)创建对象吗?请说明原因。可以 请看程序: void main() { student stu1,stu2(2,98),stu3(stu1); stu1.set_value(2,100.2); stu1.display(); stu2.display(); stu3.display(); } 结果: 分析: 因为创建对象就是在main函数中创建的,即使是用复制构造的方法创建一个新对象。(3) 将类中成员函数的定义写在类体外,类的声明写在.h文件中,成员函数的实现写在.cpp中,以这种方式在main()中使用student类。请列出各文件中的代码(类的声明文件,成员函数实现文件,main所在文件)。 类的声明文件: #include using namespace std; class student { public: student(); student(int x,float y); void display(); void set_value(int x,float y); private: int num; //学§§ì号?? float score; //考??分?? }; student::student() { num=1; score=97.5; } student::student(int x,float y) { num=x; score=y; } void student::set_value(int x,float y) { num=x+1; score=y; } void student::display() { cout<<"num"< cout<<"score"< } 成员函数实现文件: stu1.set_value(2,100.2); stu1.display(); stu2.display(); Main函数文件: #include #include"1.h" using namespace std; void main() { student stu1,stu2(2,98); #include"chengyuan.h" } 3.教材P194三大题第一小题,分析原因。