使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。 (2)定义类的友元函数fu

admin2015-05-30  36

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
    (1)完成构造函数的定义,请在注释//********1********后添加适当的语句。
    (2)定义类的友元函数fun(),请在注释//********2********料后添加适当的语句。
    (3)定义类的友元函数main(),请在注释//********3********后添加适当的语句。
    (4)补充语句,释放内存。请在注释∥********4********后添加适当的语句。
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
    1    #include
    2    class TestClass
    3    {
    4    public:
    5    //********1********
    6
    7    {
    8    data=d;
    9    next=NULL;
    10    }
    ii    void SetNext(TestClass* p)
    12    {
    13    next=p ;  
    14    }
    15    private:
    16    int data ;
    17    TestClass* next;
    18    //********2********
    19
    20    //********3********
    21
    22    };
    23    TestClass* fun(TestClass*  h)
    24    {
    25   TestClass  *t,*s,*u,*V;
    26    s=h->next;
    27    h->next=NULL;
    28    while(s!=NULL)
    29    {
    30    for(t=s,v=h;v!=NULL  &&v->datadata ;  u=v,v=v一>next)j
    31    s=s一>next ;
    32    if(v==h)
    33    h=t ;
    34    else
    35    u->next=v;
    36    t->next=v;
    37    }
    38    return h ;
    39  }
    40  void main()
    41    {
    42   TestClass*h=NULL ;
    43   TestClass*q=NULL ;
    44   do f
    45    int data ;
    46    cout<<"please input a  number,and end with 0"<    47    cin>>data;
    48    if(data==0)break ;
    49    TestClass*P  =  new TestClass(data);
    50    if(h==NULL)
    51    {
    52    h=q=p;
    53    }
    54    else
    55    {
    56    q->SetNext(p);
    57    q=p ;
    58    }
    59    }while(1);
    60    h=fun(h);
    61
    62    for(;h!=NULL ;)
    63    {
    64    q=h一>next ;
    65    cout<data<<" "<    66 delete h;
    67    //********4********
    6 8    }
    69    return;
    70    }

选项

答案(1)添加语句:Testclass(int d) (2)添加语句:friend TestClass*fun(TestClass*); (3)添加语句:friend void main(); (4)添加语句:h=q ;

解析 本题的功能是将键盘输入的数字建立一个链表。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,可以看出程序通过调用类TestClass和函数fun实现各种输出操作。
    [解题思路]
    (1)题目1要求“完成构造函数的定义”。构造函数是一种特殊的成员函数,它的名字必须与类同名,所以这里的构造函数名字是。TestClass。根据构造函数内的“data=d:”语句,知道构造函数TestClass中参数d为int型,即这里补全“TestClass(int d)”。
    (2)题目2要求“定义类的友元函数fun()”。在C++中,如果在本类以外的其它地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中fun()在类TestClass以外的地方定义的,为了其实现对类TestClass中程序变量的调用,在类TestClass中补全“friend TestClass*fun(TestClass*);”。
    (3)题目3要求“定义类的友元函数main()。”同(2),这里补全“friend void main();”。
    (4)题目4要求“补充语句,释放内存。”为了防止内存泄漏,在指针使用后要将其释放。第四个标识前面的“delete h;”语句已经将指针h释放了,所以要释放指针q,只要将其指向h就可以了,即“h=q;”。
转载请注明原文地址:https://kaotiyun.com/show/MPNp777K
0

最新回复(0)