请使用菜单命令或直接使用VC6打开考生文件夹下的工程proj1,其中有“MP3播放器”类MP3Player和主函数main的定义。程序中位于每个//ERROR**********found**********下的语句行有错误,请加以更正。更正后程序的输出应

admin2021-06-10  35

问题 请使用菜单命令或直接使用VC6打开考生文件夹下的工程proj1,其中有“MP3播放器”类MP3Player和主函数main的定义。程序中位于每个//ERROR**********found**********下的语句行有错误,请加以更正。更正后程序的输出应该是:
    天籁-1
    黑色
    注意:只能修改每个//ERROR**********found**********下的那一行,不要改动程序中的其他内容。
    1  #include
    2  #include
    3  using namespace std;
    4  class MP3Player{  //“MP3播放器”类
    5    char*type;  //型号
    6    char*color;  //颜色
    7  public:
    8    //ERROR**********found**********
    9    MP3 Player(const char*ty=NULL,const char*co){
    10    //ERROR**********found**********
    11    if(ty=NULL)
    12   type=NULL;
    13    else{
    14  type=new char[strlen(ty)+1];
    15    strcpy(type,ty);
    16    }
    17    if(co==NULL)
    18    color=NULL;
    19    else {
    20    color=new char[strlen(co)+1];
    21    strcpy(color,co);
    22    }
    23    }
    24    ~MP3Player(){
    25    if(type)delete[]type;
    26    //ERROR  **********found**********
    27    if(color)delete color;
    28    }
    29    const char*getType()const{re-turn type;}
    30    const char术getColor()const{re-turn co1or;}
    31    };
    32  int main(){
    33    MP3Player mypiayer(“天籁-1”,“黑色”);
    34    cout<    35    cout<    36    return 0;

选项

答案(1)MP3Player(const chaur* ty=NULL,const chat*co=NULL){或MP3:Player(const char*ty,const char*co){ (2)if(ty==NULL) (3)if(color)delete[]color;

解析 (1)主要考查考生对函数参数的默认值的掌握,Cc++中的函数可以提供默认实参,如果一个形参具有默认实参,那么它之后的所有形参都必须有默认实参,题目中ty提供了默认实参,所以co也必须提供默认实参,或者将ty的默认实参去掉。
    (2)主要考查考生对相等运算符与赋值运算符区别的掌握,题意是判断指针ty是否为NuLL,而不是将ty赋值为NuLL,修改赋值运算符为相等运算符。
    (3)主要考查动态分配内存的释放,动态分配的内存在释放时,new分配的内存需要使用delete释放,而new[]分配的内存需要使用delete[]。
转载请注明原文地址:https://jikaoti.com/ti/02h0FFFM
0

最新回复(0)