[C++] NRV优化

昨天,室友发给我一个程序让我运行,代码如下:

#include 
#include 
using namespace std;

class Trans 
{
public:
	Trans() : a(12) {};
	Trans(int id) : a(0), i(id) {};
	~Trans() {
		cout << "good bye " << i << endl;
	}
	friend std::ostream& operator<<(ostream&, const Trans&);
	friend Trans operator + (const Trans&, const Trans&);
private:
	int a;
	int i;
};

std::ostream& operator<<(ostream& os, const Trans& tra)
{
	return os << tra.a << endl;
}

Trans operator + (const Trans& t1, const Trans& t2)
{
	Trans t(3);
	t.a = t1.a + t2.a;
	return t;
}

int main()
{
	Trans p(1), q(2);
	cout << p + q;
	return 0;

}

我的运行结果是这样的:

你可能感兴趣的:(C++,c++)