C++实验九类和对象的使用实验报告

更新时间:2023-10-12 17:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验九类和对象的使用实验报告

一 实验目的

1、 学会用构造函数对类对象进行初始化

2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法

4、学会共用数据的保护,了解常对象、常成员函数等的使用限制

二 实验内容和要求

1. 回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2. 完成本章课后习题2、6、7题,认真分析每一题的代码。

三实验环境

Visual C++6.0开发环境

四源程序 2、

#include using namespace std; class Date {

public:

Date(int,int,int); Date(int,int); Date(int); Date();

void display(); private:

int month; int day; int year; };

Date::Date(intm,intd,int y):month(m),day(d),year(y) {}

Date::Date(intm,int d):month(m),day(d) {year=2005;}

Date::Date(int m):month(m) {

day=1; year=2005; }

Date::Date() {

month=1; day=1; year=2005; }

void Date::display() {

cout<

int main() {

Date d1(10,13,2005); Date d2(12,30); Date d3(10); Date d4;

d1.display(); d2.display(); d3.display(); d4.display(); return 0; }

6、

#include using namespace std; class Student {

public:

Student(intn,float s):num(n),score(s) {}; void change(intn,float s) {

num=n; score=s; }

void display() {

cout<

float score; };

int main()

{ }

Student stud(101,78.5); stud.display(); stud.change(101,80.5); stud.display(); return 0;

7、

#include using namespace std; class Student {

public:

Student(int n,float s):num(n),score(s) {}; void change(int n,float s) {

num=n; score=s; }

void display()const {

cout<

private: int num;

float score; };

int main() {

Student stud(101,78.5); Student *const p=&stud; p->display(); stud.change(101,80.5); p->display(); return 0; }

五 实验步骤与测试

2. 定义类Date,其中声明有四个重载构造函数,分别有三个、两个、一个、零个参数。接着定义了三个private数据年月日。 下面是对四个函数的定义,两个参数的对其数据year赋初值2005,一参的对year和day赋初值,无参的三个数据都赋初值。

主函数中定义了四个对象,并对应赋初值,根据实参的个数调用不用的构造函数,然后调用输出函数输出月日年。

6. 定义Student类,构造函数有两个参数。又定义了两个成员函数,一个可改变成员数据的值,一

个用于输出。主函数中定义对象,并赋初值,然后输出。接着调用change函数改变成员数据的值,然后再输出。 7.

(1)编译发生错误。因为定义stud为const对象时,普通成员函数是不可以访问对象数据的。

(2)常对象的成员数据是受保护不可修改的,但可以定义数据时加上mutable 这样,就可以改变想要改变的成员数据了。

还有一个问题是,普通成员函数是不能访问改变对象中的数据的,因此要定义常成员函数,在

函数change和diplay的参数列表后面加上const

(3) 成功运行。此处是定义了一个指向类对象的指针,地址为对象stud的空间起始地址。

p->display() 等价于 stud.display()等价于(*p).display()。

(4) const Student *p=&stud; 定义了一个指向常对象的常指针。

(5) Student *const p=&stud;此处犯了一个很容易犯的错误,指向两边的类型不同,指针为 指向

对象的常指针,却把常对象的地址赋予了指针,因此会报错。

六 实验结果分析

2、

6、

7.

本文来源:https://www.bwwdw.com/article/0bqf.html

Top