};
voidmain()
{Baseobj1,*p;Derived1obj2;Derived2obj3;
p=&obj1;p->abc();
p=&obj2;p->abc();
p=&obj3;p->abc();
obj1.abc();obj2.abc();obj3.abc();
}
运行结果:
Baseclass
Baseclass
Baseclass
Baseclass
Derived1class
Derived2class
10、#include
voidmain()
{doublex=123.456;
cout.width(10);cout.setf(ios:
:
dec,ios:
:
basefield);cout<cout.setf(ios:
:
left);cout<cout.width(15);cout.setf(ios:
:
right,ios:
:
left);cout<cout.setf(ios:
:
showpos);cout<cout<<-x<}
运行结果:
123.456
123.456
123.456
+123.456
-123.456
11、#include
classvector
{public:
vector(){}
vector(intI,intj){x=I;y=j;}
friendvectoroperator+(vectorv1,vectorv2)
{vectortempvector;
tempvector.x=v1.x+v2.x;
tempvector.y=v1.y+v2.y;
returntempvector;
}
voiddisplay()
{cout<<”(“<private:
intx,y;
};
voidmain()
{vectorv1(1,2),v2(3,4),v3;
cout<<”v1=”;v1.display();
cout<<”v2=”;v2.display();
v3=v1+v2;cout<<”v3=v1+v2=”;
v3.display();
}
执行结果为:
v1=(1,2)
v2=(3,4)
v3=v1+v2=(4,6)
五.编程题
1.使用成员函数(或友员)函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。
方法一:
用友员函数编程:
#include
#include
#include
classX
{charl[100];
public:
voidsetchar(){cout<<"请输入字符串:
"<friendXoperator+(X&c1,X&c2);
};
Xoperator+(X&c1,X&c2)
{strcat(c1.l,c2.l);
cout<<"两个字符串相加后为:
"<returnc1;};
voidmain()
{Xa;Xb;
a.setchar();
b.setchar();
a+b;
}
方法二:
用成员函数编程:
#include
#include
#include
classtt
{charr[700];
public:
voidoperator+(ttf);
voidsetchar(){cout<<"输入字符:
"<gets(r);}
};
voidtt:
:
operator+(ttf)
{strcat(r,f.r);
cout<<"两个字符串相加得:
"<}
voidmain()
{ttd;tts;
s.setchar();
d.setchar();
d+s;
}
2、编写一程序,定义一个圆类CIRCLE,它能提供计算面积和边长和平移圆心。
#include"iostream.h"
#definePI3.1415926
classCIRCLE
{
public:
CIRCLE()
{m_x=0;
m_y=0;
m_r=0;
}
CIRCLE(doublex,doubley,doubler)
{m_x=x;
m_y=y;
m_r=r;
}
voidSetValue(doublex,doubley,doubler)
{m_x=x;
m_y=y;
m_r=r;
}
doubleGet_x(){returnm_x;}
doubleGet_y(){returnm_y;}
doubleGet_radius(){returnm_r;}
voidmove(doublex,doubley)
{m_x+=x;
m_y+=y;
}
doublearea()
{returnm_r*m_r*PI;}
doubleside()
{return2*m_r*PI;}
private:
doublem_x,m_y,m_r;
};
voidmain()
{CIRCLEa(16,20,30);
a.move(-3,-10);
cout<<"圆形a的圆心:
("<cout<<"圆形a的半径:
"<cout<<"圆形a的面积:
"<cout<<"圆形a的边长:
"<}
3.定义一个Box(盒子)类,在该类定义中包括
数据成员:
length(长)、width(宽)和height(高);
成员函数:
构造函数Box,设置盒子长、宽和高三个初始数据;用函数volume计算并输出盒子的体积。
在main函数中,要求创建Box对象,并求盒子的体积。
解答:
#include
usingnamespacestd;
classBOX
{public:
BOX(doublel,doublew,doubleh)
{length=l;
width=w;
height=h;
}
voidvolume()
{cout<<"volume="<}
private:
doublelength,width,height;
};
intmain()
{BOXbox1(1,3,5);
box1.volume();
BOXbox2(2,4,6);
box2.volume();
}
4、某学校对教师每月工资的计算规定如下:
固定工资+课时补贴。
教授的固定工资为5000元,每个课时补贴为50元;副教授的固定工资为3000元,每个课时补贴为20元;讲师的固定工资为2000元,每个课时补贴为20元。
定义教师抽象类,派生不同职称的教师类,编写程序求不同职称教师的月工资。
#include
usingnamespacestd;
classteacher
{public:
teacher(chartname[],inttime)
{strcpy(name,tname);
coursetime=time;
}
virtualintpay()=0;
virtualvoidprint()=0;
char*getname()
{returnname;}
intgetc