试题六(15分,每空3分)
阅读以下说明和C++程序,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
字符串在程序设计中扮演着重要角色。现需要设计字符串基类string,包含设置字符串、返回字符串长度及内容等功能。另有一个具有编辑功能的串类edit_string,派生于string,在其中设置一个光标,使其能支持在光标处的插入、删除操作。
[程序]
#include
#include
#include
class string
{
int length;
char *data;
public:
int get_length() { return length; }
char *get_data() { return data; }
~string() { delete data; }
int set_data( int in_length, char *in_data);
int set_data( char *data );
void print() { cout<
};
class edit_string : public string
{
int cursor;
public:
int get_cursor() { return cursor; }
void move_cursor( int dis ) { cursor=dis; }
int add_data(string *new_data);
void delete_data( int num );
};
int string::set_data( int in_length, char *in_data )
{
length=in_length;
if(!data)
delete data;
___(1)___
strcpy(data,in_data);
return length;
}
int string::set_data( char *in_data )
{
___(2)___
if(!data)
delete data;
___(1)___
strcpy(data,in_data);
return length;
}
int edit_string::add_data( string *new_data )
{
int n,k,m;
char *cp,*pt;
n=new_data->get_length();
pt=new_data->get_data();
cp=this->get_data();
m=this->get_length();
char *news = new char[n+m+1];
for( int i=0; i
news[i]=cp[i];
k=i;
for( int j=0; j
news[i]=pt[j];
cursor=i;
for( j=k; j
___(3)___
news[i]='\0';
___(4)___
delete news;
return cursor;
}
void edit_string::delete_data( int num )
{
int m;
char *cp;
cp=this->get_data();
m=this->get_length();
for( int i=cursor; i
___(5)___
cp[i]='\0';
}



没答案给出来干什么?
怎么没有答案呢,,
不然怎么知道自己做对了没有啊