C++面向对象程序设计实验指导书(谭浩强)(4)

2019-01-03 17:48

C++面向对象程序设计实验指导书 实验四

a. 该类包含两个整型成员变量x(横坐标)和y(纵坐标),以及一个输出函数Print()用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量; b.可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值0; c.可以采用直接输入参数的方式来初始化该类的成员变量; d.可以采用其它的CPoint对象来初始化该类的成员变量; e.设计一个主函数来测试以上功能。

4.3思考题

1.设计一个CStudent(学生)类,并使CStudent类具有以下特点: a.该类具有学生姓名、学号、程序设计、信号处理、数据结构三门课程的成绩; b.学生全部信息由键盘输入,以提高程序的适应性; c.通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩; d.输出学生的基本信息、各科成绩与平均成绩; e.学生对象的定义采用对象数组实现; f.统计不及格学生人数。

13

C++面向对象程序设计实验指导书 实验五

实验五 运算符重载

5.1 实验目的

(1) 进一步了解运算符重载的概念和使用方法。 (2) 掌握几种常用的运算符重载的方法。 (3) 了解转换构造函数的使用方法。

(4) 了解在Vi s ual C++ 6.0 环境下进行运算符重载要注意的问题。

5.2 实验内容 5.2.1程序阅读

1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; class CComplex {

public:

CComplex() { real = 0; imag = 0; }

CComplex(int x,int y) { real = x; imag = y; }

int real; int imag;

CComplex operator + (CComplex obj1)-----------------------------------------------① { CComplex obj2(real + obj1.real, imag + obj1.imag); return obj2; } };

14

C++面向对象程序设计实验指导书 实验五

void main() {

CComplex obj1(100,30); CComplex obj2(20, 30); CComplex obj;

obj = obj1+obj2; ------------------------------------------------------------------② cout << obj.real <

问题一:①处的运算符重载,为什么该函数的返回值要设计成CComplex类型? 答:

问题二:②处的运算符重载函数调用就相当于“obj=operator+(obj1,obj2);”,但是为什么CComplex类中的运算符重载函数只设计了一个参数? 答:

2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。

#include using namespace std; class CComplex {

public:

CComplex() { real = 0.0; imag = 0.0; }

CComplex(float x, float y) { real = x; imag = y; }

CComplex operator + (CComplex &obj1, CComplex &obj2) { CComplex obj3(obj1.real + obj2.real, obj1.imag + obj2.imag); return obj3; }

CComplex &operator++(CComplex &obj) { obj.real += 1; obj.imag +=1; return obj; }

15

C++面向对象程序设计实验指导书 实验五

void print() { cout<

float real; float imag; };

CComplex &operator--(CComplex &x) {

x.real -= 1; x.imag -= 1; return x; }

void main() {

CComplex obj1(2.1,3.2); CComplex obj2(3.6,2.5); cout<<\ obj1.print(); cout<<\ obj2.print();

CComplex obj3 = obj1 + obj2; cout<<\ obj3.print(); ++obj3;

cout<<\ obj3.print(); --obj3;

cout<<\ obj3.print();

CComplex obj4 = ++obj3; cout<<\ obj4.print(); }

问题一:以上程序中的三个运算符重载都有错误,试改正过来,并分析该程序的输出结果。 答:

5.2.2 程序设计

1. 在以上复数类的基础上,增加重载运算符乘“*”、除“/”,实现复数的乘除运算。

16

C++面向对象程序设计实验指导书 实验五

2. 有两个矩阵a 和b ,均为2 行3 列。求两个矩阵之和。重载运算符\,使之能用于矩阵相加. 如c=a+b, 本题是< C++面向对象程序设计》第4 章第4 题。

5.3思考题

1.定义CPoint类,有两个成员变量:横坐标(x)和纵坐标(y),对CPoint类重载“++”(自增运算符)、“--”(自减运算符),实现对坐标值的改变。

17


C++面向对象程序设计实验指导书(谭浩强)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课外阅读考级题目-《大林和小林》

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: