(001) i++ 与 ++i & 左值与右值的本质区别

主要区别有三个

1、返回值不同

i++ 为后置加加,先返回i的值在对i进行自加一

++i 为前置加加,先自加一再返回i的值

2、在类中的重载方式不同

前置加加可以用类类型对象的引用来接收返回值,并且没有参数,给this加一后即可返回*this

后置加加不能使用引用,为了与前置++构成重载,需要给出一个参数int,内部先用*this拷贝构造一份临时temp,自加一后返回临时temp

    class001& operator++()
    {
        *this+=1;
        return *this;
    }


    const class001 operator++(int)
    {
        class001 temp(*this);
        *this+=1;
        return temp;
    }

#pragma once
#include
using namespace std;

class class001
{
public:
	class001 (int i = 0)
		: _i(i)
	{}
	class001(const class001& j)
		: _i(j._i)
	{}
	class001& operator++()
	{
		_

你可能感兴趣的:(面试,数据结构,c++,开发语言)