病毒复制
描述
设计一个病毒类,实现病毒检测功能。????????????????????????????????????????????????????????????????????????????????????????????????
在下面的编辑器中的Begin-End 之间补充代码,具体要求如下:????????????????????????????????????????????????????????????????????????????????????????????????
-
成员变量:int Gen ,代表当前病毒对象的年龄,默认值为 0。???????????????????????????????????????????????????????????????????????????????????????????????? -
拷贝构造函数:Virus(const Virus &v) ,拷贝到一个新的病毒对象时,并将新的病毒对象的成员变量年龄在原来病毒对象的年龄上加 1。???????????????????????????????????????????????????????????????????????????????????????????????? -
重载== 运算符:bool operator==(const int& g,const Virus &v) ,用来比较g==virus[i] ,以找出年龄为参数 g 的病毒,并统计计数。????????????????????????????????????????????????????????????????????????????????????????????????
参考代码如下:
#include <iostream>
using namespace std;
/********* Begin *********/
class Virus {
//病毒类的声明
};
//病毒类的定义以及其他内容
/********* End *********/
int main() {
int i, j;
cin >> i >> j;
Virus vs[3];
vs[0] = Virus();
vs[1] = Virus(vs[i]);
vs[2] = Virus(vs[j]);
for (int g = 0; g < 3; g++) {
int count = 0;
for (int i = 0; i < 3; i++) {
if (g == vs[i])
count++;
}
cout << "年龄:" << g << " 数量:" << count << endl;
}
}
输入
病毒的年龄、数量????????????????????????????????????????????????????????????????????????????????????????????????
输出
输出病毒的三代的年龄和数量(共占3行)????????????????????????????????????????????????????????????????????????????????????????????????
输入输出示例
#include<iostream>
using namespace std;
class Virus {
public:
int Gen;
Virus(int g = 0)
{
Gen = g;
}
Virus(const Virus& v)//这个是拷贝构造函数的格式,类型(const +类型 +&(引用符)暂时引用的对象 )
{
Gen =v.Gen+1;
}
};
bool operator==(const int& g, const Virus& v)//bool函数,其实布尔类型本质上就是个只会返回0和1的类型,改为int也可以
{
if(g == v.Gen)
return 1;
return 0;
}
int main() {
int i, j;
cin >> i >> j;//依据题目样例输入的是2个0
Virus vs[3];//新创建3个对象 vs[0] vs[1] vs[2] ,每个对象都初始化默认值为0
vs[0] = Virus();//在类里面自定义了拷贝构造函数 ,如果括号里放的是一个类的对象,则调用拷贝构造函数,
//每次调用拷贝构造后值都在原来基础上加1
//若括号里为空,则是普通的构造函数
vs[1] = Virus(vs[i]);
vs[2] = Virus(vs[j]); //到这里时 vs[0]=0 vs[1]=1 vs[2]=1
for (int g = 0; g < 3; g++) {
int count = 0;//两个for循环依次检测判断每个对象具体对象 年龄的 数量
for (int i = 0; i < 3; i++) {
if (g == vs[i])//判断条件
count++;
}
cout << "年龄:" << g << " 数量:" << count << endl;
}
}
#include<iostream>
using namespace std;
class Virus {
public:
int Gen;
Virus(int g = 0)
{
Gen = g;
}
Virus(const Virus& v)//这个是拷贝构造函数的格式,类型(const +类型 +&(引用符)暂时引用的对象 )
{
Gen =v.Gen+1;
}
};
bool operator==(const int& g, const Virus& v)//bool函数,其实布尔类型本质上就是个只会返回0和1的类型,改为int也可以
{ //这是个运算符重载 ,const+类型& 常引用 -->引用值,相比与普通的引用,常引用,不会改变被引用的值
if(g == v.Gen) // 普通的引用--> 引用值,普通引用有可能改变被引用的值,不安全,
return 1;
return 0;
}
int main() {
int i, j;
cin >> i >> j;//依据题目样例输入的是2个0
Virus vs[3];//新创建3个对象 vs[0] vs[1] vs[2] ,每个对象都初始化默认值为0
vs[0] = Virus();//在类里面自定义了拷贝构造函数 ,如果括号里放的是一个类的对象,则调用拷贝构造函数,
//每次调用拷贝构造后值都在原来基础上加1
//若括号里为空,则是普通的构造函数
vs[1] = Virus(vs[i]);
vs[2] = Virus(vs[j]); //到这里时 vs[0]=0 vs[1]=1 vs[2]=1
for (int g = 0; g < 3; g++) {
int count = 0;//两个for循环依次检测判断每个对象具体对象 年龄的 数量
for (int i = 0; i < 3; i++) {
if (g == vs[i])//判断条件 运算符重载的调用
count++;
}
cout << "年龄:" << g << " 数量:" << count << endl;
}
}
| 输入 | 输出 | 示例 1 | 0 0 | 年龄:0 数量:1
年龄:1 数量:2
年龄:2 数量:0 |
|