病毒复制
描述设计一个病毒类,实现病毒检测功能。
在下面的编辑器中的Begin-End之间补充代码,具体要求如下:
-
成员变量:int Gen,代表当前病毒对象的年龄,默认值为 0。
-
拷贝构造函数:Virus(const Virus &v),拷贝到一个新的病毒对象时,并将新的病毒对象的成员变量年龄在原来病毒对象的年龄上加 1。
-
重载==运算符:bool operator==(const int& g,const Virus &v),用来比较g==virus[i],以找出年龄为参数 g 的病毒,并统计计数。
参考代码如下:
#include输入using namespace std; class Virus { //病毒类的声明 }; //病毒类的定义以及其他内容 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行)
输入输出示例#includeusing 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; } }
#includeusing 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 |



