17. 设有一个类,其定义如下: class CSample {
char *p1,*p2; public:
void init(char *s1,char *s2); void print();
{ cout<<\ } void copy(CSample &one); void free(); };
成员函数init()是将 s1和s2所指向的字符串分别送到p1和p2所指 向的动态申请的内存空间中,函数copy将对象one中的两个字符串 复制到当前的对象中,free()函数释放p1和p2所指向的动态分配的 内存空间。设计一个完整的程序,包括完成这3个函数的定义和测试 工作。
#include
char *p1,*p2; public:
void init(char *s1,char *s2); void print()
{ cout<<\ } void copy(CSample &one); void free(); };
void CSample::init(char *s1,char *s2) {
p1=new char[80]; p2=new char[80]; strcpy(p1,s1); strcpy(p2,s2); }
void CSample::copy(CSample &one) {
strcpy(p1,one.p1); strcpy(p2,one.p2); }
void CSample::free() {
delete []p1; delete []p2;
}
void main() {
CSample two,three; two.init(\上海\北京\ two.print(); three.init(\ three.copy(two); three.print(); two.free(); three.free(); }
33. 定义一个抽象类CShape,包含纯虚函数Area()(用于计算面积 )和 SetData()(用于重设形状大小)。然后派生出三角形CTriangle 类、矩形CRect类、圆CCircle类,分别求其面积。最后定义一个 CArea类,计算这几个形状的面积之和,各形状的数据通过CArea 类的构造函数或成员函数来设置。编写一个完整的程序。 #include
virtual float Area()=0; };
class CTriangle:public CShape { public:
CTriangle(float h=0,float w=0) {
H=h;W=w; }
float Area() {
return(float)(H*W*0.5);
virtual void SetData(float f1,float f2)=0;
}
void SetData(float f1,float f2) {
H=f1;W=f2; }
private: float H,W; };
class CRect:public CShape
{ public:
CRect(float h=0,float w=0) {
H=h;W=w;
}
float Area() {
return(float)(H*W); }
void SetData(float f1,float f2) {
H=f1;W=f2; }
private: float H,W; };
class CCircle:public CShape { public:
CCircle(float r=0) {