第十五天第一个问题

czfznb / 2023-05-06 / 原文

问题描述:

定义一个整数加法器类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;
}
};