使用VC6打开考生文件夹下的工程test7_3,此工程包含一个源程序文件test7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。 (1)为类Circle增加一个构造函数,该

admin2009-01-15  30

问题 使用VC6打开考生文件夹下的工程test7_3,此工程包含一个源程序文件test7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。
   (1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。
   (2)为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
   Circle c;
   c.SetRadius(5);
   c.Print();
   将输出:The circle has radius of 5!
   请在注释“//**2**”之后添加适当的语句。
   (3)完成友元函数void CompareR(Circle *cl,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用 if-else结构完成。请在注释“//**3**”之后添加适当的语句。
   输出结果如下;
       The circle has radus of 5!
       The circle has radius of 10!
       c1<c2
   注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
   源程序文件test7_3.cpp清单如下:
       #include<iostream.h>
        class Circle{
        public:
        Circle():radius(5){}
        //**1**
        void SetRadius(int r)  {radius=r; }
        int GetRadius()  {return radius; }
        //**2**
        friend void CompareR(Circle *c1,Circle*C2);
       private:
        int radius;
       };
       void CompareR(Circle *c1,Circle *C2)
       {
        //**3**
       cout<<"c1>c2"<<endl;
        else
           if((c1->GetRadius())==(c2->GetRadius()))
               cout<<"c1=c2"<<endl;
           else
               if((c1->GetRadius())<(c2->GetRadius()))
                   cout<<"c1<c2"<<endl;
       }
       void main()
       {
        Circle c1;
        c1.SetRadius(5);
        C1.Print();
        Circle c2(10);
        c2.Print();
        CompareR(&c1,&c2);
       }

选项

答案(1) Circle(int rad):radius(rad){} (2) void Print(){cout<<"The circle has radius of"<<radius<<"!\n";} (3) if((c1->GetRadius())>(c2->GetRadius()))

解析 本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。友元函数的类体外的定义与一般函数一样,注意(3)中if-else的使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。
转载请注明原文地址:https://jikaoti.com/ti/VYkiFFFM
0

最新回复(0)