我想确保我正确理解按值传递与按引用传递。特别是,我正在查看增量的前缀/后缀版本++
对象的运算符。
假设我们有以下课程X
:
class X{
private:
int i;
public:
X(){i=0;}
X& operator ++ (){ ++i; return *this; } //prefix increment
X operator ++ (int unused){ //postfix increment
X ret(*this);
i++;
return ret;
}
operator int(){ return i; } //int cast
};
首先,我是否正确实现了前缀/后缀增量运算符?
其次,与前缀运算符相比,后缀运算符的内存效率如何?具体有多少个X
使用每个版本的运算符时都会创建对象副本吗?
对按引用返回与按值返回到底发生了什么的解释可能会帮助我理解。
编辑:例如,使用以下代码...
X a;
X b=a++;
...a 和 b 现在是别名吗?
更惯用的说法是称为前缀增量物体本身的在后缀增量中:
X operator++(int)
{
X copy(*this);
++*this; // call the prefix increment
return copy;
}
递增的逻辑X
因此,对象仅包含在前缀版本内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)