2023.06.12C++期末填空题

1、CAT's Copy

阅读下面的程序,完成其中复制构造函数的代码。

#include <iostream>
using namespace std;
class CAT
{     public:
           CAT();
           CAT(const CAT&);
          ~CAT();
          int GetAge() const { return *itsAge; }
          void SetAge(int age){ *itsAge=age; }
      protected:
          int* itsAge;
};
CAT::CAT()
{    itsAge=new int;
     *itsAge =5;
}
CAT::CAT(const CAT& c)
{  
     填空1
     填空2 } 
CAT::~CAT() { delete itsAge; }

1  itsAge=new int;    2  itsAge=c.itsAge;

2、对象的动态创建

填充程序空白,完成指定的输出。

using namespace std;
class A{
    int i;
public:
    A(int k=0){
        i=k;
    }
    void display(){
        cout<<"i="<<i<<endl;
    }
};
int main()
{
    空1   //动态创建对象p
   p->display();
   空2    //删除对象p
  p=new A(8);
    p->display();
    delete p;
     空3   //p指向对象数组
    A *q=p;
    for(int i=0;i<3;i++){
空4 //输出对象数组数据
}
空5  //删除对象数组指针p
return 0;
}

###程序输出如下:

i=0
i=8
i=0
i=0
i=0

1: A *p=new A;   2 :delete p;  3:   p=new A[3];    4:(q+i)->display();    5:delete[] p;

3、

运算符重载

分数 20

作者 gong

单位 哈尔滨华德学院

圆类定义如下,重载输入、输出运算符为友元函数,重载算术减法运算符为成员函数,参考给出代码进行填空。

class Circle
{
private:
    double rad;
    double area;
    friend istream& operator>>(istream&in, Circle &cl); //重载>>为Circle类的友元函数
    friend operator<<(ostream&out, Circle &cl); //重载<<为Circle类的友元函数
public: 
   Circle(double r=0) 
  {
        rad=r;
        area=3.14*r*r;
  }

double operator (Circle &cl)//重载减号 
 { 
    return this->area-cl.area;//返回两个圆的面积差 
 }
};

istream& operator>>(istream&in, Circle &cl)   //必须是istream&(即istream类对象的引用)
{  
     in>>cl.rad ; //从输入流中提取数据给圆的半径 
     cl.area=3.14*cl.rad*cl.rad; return in; 
} 

ostream& operator<<(ostream&out, Circle &cl)
{ 
    out<<"rad="<<cl.rad<<" area="<<cl.area; //输出圆的半径和面积,形如:rad=10 area=314 
    return out;
} 

int main() 
{
   Circle c1,c2;
   cin>>c1>>c2;
   cout<<c1<<endl; 
   cout<<c2<<endl; 
   cout<<c2-c1<<endl;
    return 0; 
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值