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;
}