当C ++匿名对象替换先前分配的对象时会发生什么?

时间:2014-12-08 22:33:24

标签: c++ constructor

这个问题涉及将变量分配给新对象时对象会发生什么。

Date {
    public:
        Date(int day, int month);
        int day;
        int month;
};

在main中:

Date birthday(7,4); //line 1
birthday = Date(5,5); //line 2

我的理解是第2行的RS返回一个匿名对象。我的问题是,使用值7,4创建的对象会发生什么?它是否被内存替换为匿名对象?

1 个答案:

答案 0 :(得分:2)

无法将某个对象替换为另一个对象。

可以做什么,以及你的例子中实际发生了什么,是从临时对象移动分配到某个目标对象。

如果它不是临时对象,则不会进行移动分配,而是进行复制分配。

对象的变化都没有,只有它有什么价值。

BTW:您的示例类的复制赋值,移动赋值,复制构造,移动构造和销毁被隐式定义为成员。