006:奇怪的类复制
描述
程序填空,使其输出9 22 5
#include <iostream>
using namespace std;
class Sample {
public:
int v;
// 在此处补充你的代码
};
void PrintAndDouble(Sample o)
{
cout << o.v;
cout << endl;
}
int main()
{
Sample a(5);
Sample b = a;
PrintAndDouble(b);
Sample c = 20;
PrintAndDouble(c);
Sample d;
d = a;
cout << d.v;
return 0;
}
输入
无
输出
9
22
5
函数是怎么实现的
#include <iostream>
using namespace std;
class Sample {
public:
int v;
// 在此处补充你的代码
Sample()
{
cout << "调用无参构造函数" << endl;
}
Sample(const Sample& a)
{
this->v = a.v+2;
cout << "调用复制构造函数" <<endl;
}
Sample(int v)
{
this->v = v;
cout << "调用有参构造函数" << endl;
}
};
void PrintAndDouble(Sample o)
{
cout << o.v;
cout << endl;
}
int main()
{
Sample a(5);
Sample b = a;//调用复制构造函数让a给b赋值 相当于b(a)
PrintAndDouble(b);// 输出9 对象为参 生成临时对象 调用复制构造函数
Sample c = 20;
PrintAndDouble(c);// 输出22 对象为参 生成临时对象 调用复制构造函数
Sample d;//调用无参构造函数
d = a;//将a的值赋值给d
cout << d.v;// 输出5
return 0;
}
运行结果
调用有参构造函数
调用复制构造函数
调用复制构造函数
9
调用有参构造函数
调用复制构造函数
22
调用无参构造函数
5
答案
Sample(int v )
{
this->v = v;
};
Sample()
{
;
}
Sample(const Sample& a)
{
this->v = 2 + a.v;
}