为什么重载前置++函数返回值是 引用,而重载后置++函数返回值是 值?
前置++函数返回值是 引用,是因为如果返回的是 值,那么系统就会一直调用拷贝函数进行自增,导致原对象只能自增一次。
但是后置++就返回的是 值,我知道是因为局部变量不能返回 引用 和 指针 ,不然就是 地址 了,,但是后置++函数返回 值 的话,
不会出现系统调用拷贝函数导致原对象不自增吗?
不太明白,求解
为什么重载前置++函数返回值是 引用,而重载后置++函数返回值是 值?
前置++函数返回值是 引用,是因为如果返回的是 值,那么系统就会一直调用拷贝函数进行自增,导致原对象只能自增一次。
但是后置++就返回的是 值,我知道是因为局部变量不能返回 引用 和 指针 ,不然就是 地址 了,,但是后置++函数返回 值 的话,
不会出现系统调用拷贝函数导致原对象不自增吗?
不太明白,求解
看了看运算符重载相关的知识,差不多明白了。
因为编译器内置的后置++是不可以连续运算的,所以重载的后置++完全可以返回右值(保持和内置++)一致,就算返回的是值不能进行连续运算也符合标准。而前置++是允许连续运算的,所以需要返回引用。(我才知道后置++不能连续运算。。。。。。)