急求!关于函数返回临时对象的有关问题

急求!关于函数返回临时对象的问题
#include "stdafx.h"
#include <iostream>
using namespace std;

class Data
{
public:
  Data();
  Data(int a, int b);
  void putshow();
  friend const Data operator +(const Data& d1, const Data& d2);
  Data reply();

private:
  int m_a, m_b;
};
void Data::putshow()
{
  cout<<"======================================="<<endl;
}
Data::Data()
{
  m_a = 0;
  m_b = 0;
}
Data::Data(int a, int b)
{
  m_a = a;
  m_b = b;
}
Data operator +(const Data& d1, const Data& d2)
{
  Data result;
  result.m_a = d1.m_a + d2.m_a;
  result.m_b = d1.m_b + d2.m_b;
  return result;
}

Data Data::reply()
{
  Data sreturn = *this;
  return sreturn;
}

int _tmain(int argc, _TCHAR* argv[])
{
  Data m1(1, 2), m2(3, 4), m3(5, 6);
  m1.reply().putshow();//???为什么返回临时的了栈对象,还可以对它进行操作??????
  (m1+m2)=m3;//??
return 0;
}


------解决方案--------------------
临时对象也有生命周期,在其生命周期内都可以对其操作
------解决方案--------------------
为什么要“不能”你才肯满意?说说你认为“不能”的理由吧。
------解决方案--------------------
你返回的是一个对象,在调用这句的时候生命周期还没有结束呢。
------解决方案--------------------
http://www.cnblogs.com/liyiwen/archive/2009/12/02/1615711.html


------解决方案--------------------
探讨

引用:

临时对象也有生命周期,在其生命周期内都可以对其操作
临时对象在返回完了之后生命周期还没结束吗?那那什么时候结束啊?是不是随机、不定的啊?