面向对象程序设计实验报告 下载本文

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<