{
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[strlen(s1)+1]; p2=new char[strlen(s2)+1]; strcpy(p1,s1); strcpy(p2,s2); }
void CSample::copy(CSample &one) {
if (this!=&one ) *this=one; }
void CSample::free() {
delete[] this->p1; delete[] this->p2; }
void main() {
CSample a,b;
a.init(\ a.print(); b.copy(a); b.print(); a.free(); }
本程序的设计是有问题的,最好是把new分配内存写在构造函数中!如此无法进行b.free()!因为对象b没有用new分配内存,因此不可以用delete运算符。
18.设有一个类,其定义如下:
#include
{ int nSizeOfInt; //整型数组的大小
int nNumOfInt; //整型数组中实际存放的元素个数 int nSizeOfFloat; //浮点数组的大小
int nNumOfFloat; //浮点数组中实际存放的元素个数 int *pInt; //指向整型数组,动态分配内存空间 float *pFloat; //指向浮点数组,动态分配内存空间 public:
CArray(int nIntSize=100, int nFloatSize=200); void put(int n); //将n加入到整型数组中
void put(float x); //将x加入到浮点数组中
int getInt(int index); //取整型数组中第index个元素,index从0开始 float getFloat(int index); //取浮点数组中第index个元素,index从0开始 ~CArray(); //析构函数,释放动态分配的内存空间 void print(); //分别输出整型数组和浮点数组中的所有元素 };构造完整的程序,包括类成员函数的定义和测试程序的设计。构造函数中的nIntSize 和nFloatSize分别表示整型数组和浮点数组的大小。
CArray::CArray(int nIntSize, int nFloatSize) {
nSizeOfInt=nIntSize;
pInt=new int[nSizeOfInt]; nSizeOfFloat=nFloatSize;
pFloat=new float[nSizeOfFloat]; nNumOfInt=0;nNumOfFloat=0; }
void CArray::put(int n) {
pInt[nNumOfInt++]=n; }
void CArray::put(float x) { pFloat[nNumOfFloat++]=x; }
int CArray::getInt(int index) {
if (index>=0 && index<=nNumOfInt)
return pInt[index];
}
float CArray::getFloat(int index) {
if (index>=0 && index<=nNumOfFloat) return pFloat[index]; }
CArray::~CArray() {
delete [] pFloat; delete [] pInt; }
void CArray::print() {
for( int i=0;i cout<<'\\n'; for( int j=0;j void main() { int a=10; float x=10.5; CArray MyArray(10,15); MyArray.put(a); MyArray.put(x); MyArray.put(a+1); MyArray.put(x+1); MyArray.put(a+2); MyArray.put(x+2); MyArray.print(); } 19.在一个程序中,实现如下要求: (1)构造函数重载; (2)成员函数设置默认参数; (5)使用不同的构造函数创建不同的对象。 #include int num; char name[10]; char sex; public: stud() { num=10010; strcpy(name,\ sex='F'; } stud(int n,char nam[ ],char s ) { num=n; strcpy(name, nam) ; sex=s; } void display() { cout<<\ cout<<\ cout<<\ }; void main() { stud stud1; stud1.display(); stud stud2(10011,\ stud2.display(); }