四川师范大学 郭远华 信息与计算科学c++s实验(2)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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三大题第一小题,分析原因。

相关文档
最新文档