软件技术基础2实验任务8s带解答
- 格式:doc
- 大小:251.00 KB
- 文档页数:6
《软件技术基础2》实验报告8
学院
专业
年级
姓名
任课教师葛卫民
实验指导葛卫民
年月日
实验八
一、实验目的
通过本试验,使学生理解面向对象程序设计方法中多态性的基本概念及基本语法;掌握运算符重载、虚函数的基本使用方法;理解多态程序的执行过程。
二、实验内容
1.通过程序实例,理解运算符重载和虚函数的特点和执行机制。
2.调试教材中练习7第3题的两个程序,给出运行结果。
3.编写教材练习7中第6题要求的程序,并完成上机调试的实验任务。
三、实验准备
1.复习第七章的内容,重点是7.2、7.3节的内容及相关例题;
2.编写实验内容中3要求的程序。
四、实验任务
任务一:练习7第3题第1小题
1.内容:阅读下列程序并写出输出结果。
2.源程序:
#include <iostream.h>
class Base{
public:
virtual void fun(int x){cout<<"Base class x="<<x<<endl;} };
class subclass:public Base{
virtual void fun(int x){cout<<"subclass x="<<x<<endl;} };
void Test(Base *p){int a=2; p->fun(a);}
void main()
{
Base obj1;
subclass obj2;
Test(&obj1);Test(&obj2);
}
3.运行结果:
4.实验中遇到的主要问题及解决方法
任务二:练习7第3题第2小题
1.内容:阅读下列程序并写出输出结果。
2.源程序:
#include <iostream.h>
#include <math.h>
class base
{
protected:int a,n;
public:
virtual void setab(int i,int j=0){a=i;n=j;}
virtual void disp()=0;
};
class pa1:public base
{public:void disp(){cout<<a*a<<endl;}};
class pa2:public base
{public:void disp(){cout<<a*a*a<<endl;}};
class pan:public base
{public:void disp(){cout<<pow(double(a),double(n))<<endl;}};
void main()
{
base *pa;
pa1 ob1;pa2 ob2;pan ob3;;
pa=&ob1;pa->setab(10);pa->disp();
pa=&ob2;pa->setab(5);pa->disp();
pa=&ob3;pa->setab(5,4);pa->disp();
}
3.运行结果:
3.实验中遇到的主要问题及解决方法
任务三:练习7第6题
1.内容:设计一个字符串类重载“+”运算符,使其实现两个字符串的连接并赋值。
成员函数。
2.源程序:
#include <iostream.h>
#include<string.h>
class String
{
private:
char str[80];
public:
String (char *m)
{
strcpy(str,m);
}
String operator+=(String&s)
{
strcat(str,s.str) ;
return *this;
}
void print()
{
cout<<"连接后的字符串:"<<str<<endl;
}
};
void main()
{
String c1("string"), c2("test");
c1+=c2;
c1.print();
}
3.运行结果:
4. 实验中遇到的主要问题及解决方法
1.内容:设计一个字符串类重载“+”运算符,使其实现两个字符串的连接并赋值。
友元函数。
2.源程序:
#include <iostream.h>
#include<string.h>
class String
{
private:
char str[80];
public:
String (char *m)
{
strcpy(str,m);
}
friend String operator+=( String&s1,String&s2);
void print()
{
cout<<"连接后的字符串:"<<str<<endl;
}
};
String operator+=( String&s1,String&s2 )
{
strcat(s1.str,s2.str) ;
return s1;
}
void main() {
String c1("string"), c2("test");
c1+=c2;
c1.print();
}
3.运行结果:
4. 实验中遇到的主要问题及解决方法
五、教师评分(百分制)。