使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成构造函数的定义,使数据成员filename,content指向为空。

admin2009-01-15  54

问题 使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
   (1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句;
   (2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句;
   (3)完成成员函数copy(File & source,File & target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在注释“//**3**”之后添加适当的语句:
   (4)完成析构函数的定义,要求释放content指向的空间。请在注释“//**4**”之后添加适当的语句。
    输出结果如下:
   file2:file1 contents
   file2:file2 contents
   注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
   源程序文件testl4—3.cpp清单如下:
     #include<iostream.h>
     #include<string.h>
     class File{
     private:
      char file_name[64];
      char*contents;
     public:
     File(char*filename)
     {
   //  **  1  **
     };
     File::~File()
   {
   //  **  4  **
   }
    void printfile(){cout<<file_name<<":"<<contents<<endl;)
        friend bool copy(File & source,File & target);
        bool set_contents(char * new_contents);
   };
   bool File::set_contents(char*new_contents)
   {
   //  **  2  **
   if(contents==NULL)
      return false;
    strcpy(contents,new_contents);
    return true;
   }
   bool copy(File & source,File & target)
   {
   //  **  3  **
   }
   void main{)
   {
     File f1("filel"),f2("file2");
     f1.set_contents("filel contents");
     copy(f1,f2);
     f2.printfile();
     f2.set_contents("file2 contents,);
     f2.printfile();
   }

选项

答案(1) strcpy(file_name,filename); contents=NULL; (2) contents=new char[(strlen(new_contents)+1)]; (3) return target.set contents(source.contents); (4) delete[]contents;

解析 主要考查点为类的构造函数的定义、字符串函数的使用及动态空间的申请与释放等,注意字符串函数的使用,其中strlen返回字符串含有字符的数目,strcpy是将参数2的字符串赋值给参数1的字符串。
转载请注明原文地址:https://jikaoti.com/ti/0YkiFFFM
0

最新回复(0)