有这么复制构造的吗
题目描述
补全类 Magic
的定义,使得其输出符合下文的规定。
关于输入
无
关于输出
见样例输出
核心技巧
- 注意关注复制构造函数调用的时机。
参考答案
#include <iostream>
class Magic {
public:
int value;
Magic() = default;
Magic(int value) : value{value} {}
Magic(const Magic& other) : value{other.value + 2} {}
};
class Magic2 {
public:
Magic m;
Magic2() = default;
Magic2(int value) : m{value} {}
Magic2(const Magic2& m2) = default;
};
void print(Magic o) {
std::cout << o.value << std::endl;
}
int main() {
Magic a(5);
Magic b = a;
print(b);
Magic d;
d = a;
std::cout << d.value << std::endl;
Magic2 e(8);
Magic2 f = e;
print(f.m);
f = e;
print(f.m);
}