面向对象程序设计实验报告(5)

2018-12-19 22:02

CBase2(int b) :b(b) { cout<<\ } ~CBase2() { cout<<\ } void print() { cout<<\ } protected: int b; };

class CDerive:public CBase1,public CBase2 {

public: CDerive() { cout<<\ } ~CDerive() { cout<<\ } void print() { CBase1::print(); CBase2::print(); b1.print(); b2.print(); cout<<\ } private: CBase1 b1;

CBase2 b2; int c; };

void main() { CDerive d; d.print(); }

问题一:改正以上程序中的错误,并分析输出结果。

答:CBase1与CBase2没有合适的构造函数,改正方法在CBase1,CBase2设置缺省值为0

改正:将CDerive构造函数改为:CDerive(int a,int b,int c): CBase1(a),CBase2(b),b1(a),b2(b),c(c) { cout<<\ }

主函数中CDerive d;改为 CDerive d (1,2,3); 输出结果是:

实验七 多态性—函数与运算符的重载

7.1 实验目的

1. 理解静态联编和动态联编的概念; 2. 掌握成员函数方式运算符重载; 3. 掌握友元函数方式运算符重载; 4. 掌握++、--、=运算符的重载。

7.2 实验内容

1. 理解下面的程序并运行,然后回答后面的问题。 #include\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; } };

void main() {

CComplex obj1(100,30); CComplex obj2(20,30); CComplex obj; obj=obj1+obj2; cout<

问题一:①处的运算符重载,为什么该函数的返回值要设计成Ccomplex类型? 答:①处运算符重载,要返回两个值real和imag,所以函数返回值类型设计为CComplex类型。

问题二:②处的运算符重载函数调用就相当于“obj=operator+(obj1,obj2);”,请问CComplex类中的运算符重载函数为什么只有一个参数? 答:因为调用重载运算符的对象本身相当于一个参数。

课后习题 第二章

一 实验目的

1.掌握引用的使用。

2.掌握调用函数的方法。 二.实验内容

2.19 写出下列程序的运行结果。 #include using namespace std; void f(int &m,int n) {

int temp; temp=m; m=n; n=temp; }

Int main() {

int a=5,b=10; f(a,b)

cout<

}

三.实验结果

四.心得体会

1.引用可以作为函数形参,和指针变量作为函数参数效果一样,但是引用作为函数参数更清晰。 2.

第三章

一.实验目的

1.掌握静态数据成员的使用。 2.掌握静态成员函数的使用。 二.实验内容

3.26 写出下列程序的运行结果。 #include using namespace std; Class M{ int A;

static int B; public: M(int a) { A=a; B+=a;

cout<<”Constructing\\n”<

Static void f1(M m); ~M()

{ cout<<”Destructing\\n”<

Void M::f1(M m)


面向对象程序设计实验报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:西工大18春《管理信息系统》在线作业

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

马上注册会员

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