我正在尝试为创建为的 Integer 类重载二进制 +:
const Integer operator+(const Integer& left,const Integer& right)
{
return Integer(left.i + right.i);
}
和
const Integer operator+(const Integer& left,const Integer& right)
{
Integer tmp(left.i + right.i);
return tmp;
}
现在我学到的是,在第一种情况下,创建并返回一个临时 Integer 对象,在第二种情况下,通常使用构造函数调用创建对象,然后复制然后调用析构函数。Ecekl 所说的第一个是编译器通过将对象直接构建到外部返回值的位置来利用这一点。我们从中推断出什么?我阅读了有关返回值优化的信息,但无法通过直接复制到位置事物中来理解它的含义。