有这么复制构造的吗

题目描述

补全类 Magic 的定义,使得其输出符合下文的规定。

关于输入

关于输出

见样例输出

核心技巧

  • 注意关注复制构造函数调用的时机。

参考答案

#include <iostream>

class Magic {
public:
    int value;
    Magic() {}
    Magic(int x): value{x} {}
    Magic(const Magic& m): value{m.value + 2} {}
};

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;
    print(d);
}