急求!关于函数返回临时对象的有关问题
急求!关于函数返回临时对象的问题
#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
------解决方案--------------------
#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
------解决方案--------------------