程序设计与算法(三)第02周测验002:奇怪的类复制
【摘要】
程序设计与算法(三)第02周测验002:奇怪的类复制
本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第二周测验。
总时间限制: 1000ms 内存限制: 65536kB...
程序设计与算法(三)第02周测验002:奇怪的类复制
本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第二周测验。
-
总时间限制:
1000ms
-
内存限制:
65536kB
-
描述
程序填空,使其输出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; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
-
输入
无
-
输出
9 22 5
- 1
- 2
- 3
-
样例输入
None
-
样例输出
9 22 5
- 1
- 2
- 3
class Sample {
public:
int v;
// 在此处补充你的代码
};
- 1
- 2
- 3
- 4
- 5
类里面应该是填写构造函数
Sample a(5);
Sample b = a;
PrintAndDouble(b);
Sample c = 20;
PrintAndDouble(c);
Sample d;
d = a;
cout << d.v;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
主函数里的Sample b = a;
可知是复制构造函数
Sample a(5);
Sample b = a;
PrintAndDouble(b);
- 1
- 2
- 3
上面语句调用了两次构造函数由5
到9
所以复制构造函数可以暂时写为
Sample(Sample &x)
{
v=x.v+2;
}
- 1
- 2
- 3
- 4
或
Sample(const Sample &x)
{
v=x.v+2;
}
- 1
- 2
- 3
- 4
又因为是用a初始化b,所以我们要保证a不变。故使用常引用版本。
再看到:
Sample d;
d = a;
cout << d.v;
- 1
- 2
- 3
所以我们需要写另一个构造函数:
Sample(int n = 0)
{
v=n;
}
- 1
- 2
- 3
- 4
构造函数中,需要把输入的参数加一个初始化,本题我们初始化为0,当然1,2,3,4都可以。
所以答案为:
Sample(int n=0)
{
v=n;
}
Sample(const Sample &x)
{
v=x.v+2;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
提交,通过。记得下载通过码
文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/CANGYE0504/article/details/104716975
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)