这个问题涉及将变量分配给新对象时对象会发生什么。
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创建的对象会发生什么?它是否被内存替换为匿名对象?
答案 0 :(得分:2)
您无法将某个对象替换为另一个对象。
你可以做什么,以及你的例子中实际发生了什么,是从临时对象移动分配到某个目标对象。
如果它不是临时对象,则不会进行移动分配,而是进行复制分配。
对象的变化都没有,只有它有什么价值。
BTW:您的示例类的复制赋值,移动赋值,复制构造,移动构造和销毁被隐式定义为成员。