第十五天第一个问题
问题描述:
定义一个整数加法器类Adder,对其重载运算符“+”、“++”,main(void)函数完成对其的测试。
Adder类结构说明:
Adder类的数据成员包括:
①私有数据成员:数值域num(int型)。
Adder类成员函数包括:
①有参构造函数Adder(int)和拷贝构造函数Adder(const Adder &),其中有参构造函数参数默认值为0,输出信息“Adder Constructor run”,拷贝构造函数输出信息“Adder CopyConstructor run”
②析构函数,析构函数输出信息“Adder Destructor run”
③公有函数成员void setNum(int)和int getNum() const分别返回和设置数值域。
④重载“+”运算符,实现两个Adder对象相加的运算
⑤重载“++”运算符,实现Adder对象自增运算
⑥公有成员函数void show() const用于显示加法器的信息,显示格式为:Adder(<数值域>)
裁判测试程序样例:
#include <iostream>
using namespace std;
/*请在这里填写答案*/
//主函数
int main(void){
int x;
Adder a1,a2(a1);
cin>>x;
(a1++).show();
a1.show();
a2.setNum(x);
(++a2).show();
a2.show();
(a1+a2).show();
return 0;
}
输入样例:
1
输出样例:
Adder Constructor run
Adder CopyConstructor run
Adder CopyConstructor run
Adder(0)
Adder Destructor run
Adder(1)
Adder(2)
Adder(2)
Adder Constructor run
Adder(3)
Adder Destructor run
Adder Destructor run
Adder Destructor run
代码:
class Adder
{
private:
int num;
public:
Adder(int a=0)
{
num=a;
cout<<"Adder Constructor run"<<endl;
}
Adder(const Adder &a)
{
num=a.num;
cout<<"Adder CopyConstructor run"<<endl;
}
~Adder()
{
cout<<"Adder Destructor run"<<endl;
}
void setNum(int a)
{
num=a;
}
int getNum() const
{
return num;
}
Adder operator +(Adder &a)
{
this->num=a.num+this->num;
return (Adder(getNum()));
}
Adder & operator ++(void)
{
num++;
return *this;
}
Adder operator ++(int k)
{
Adder tmp=*this;
++(*this);
return tmp;
}
void show() const
{
cout<<"Adder("<<num<<")"<<endl;
}
};