当一个函数在C++中用作左操作数时是什么意思

Mas*_*ari 0 c++ ns2 operand

我正在使用C++语言的NS2.我看到以下代码,我无法理解!!!!

ch->size() += IP_HDR_LEN;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助...

Rak*_*kib 7

该方法ch->size()引用(左值)返回到表达式中使用的内容.

例如:

class A{
 int x;
 public:
  int& getX(){ return x;}
};
Run Code Online (Sandbox Code Playgroud)

然后它可以用作

A* a= new A;
a->getX() +=5; // which is equivalent to x+=5 or x=x+5, since getX returns reference to 'x', it can be used as LHS of an expression
Run Code Online (Sandbox Code Playgroud)

所以对于你的问题:

当一个函数在C++中用作左操作数时是什么意思

这里返回值用作左操作数,而不是函数.返回类型是对某事物引用,它代表左值,可以用作LHS.

编辑

正如@dlf所指出的,size()可以返回任何重载类的对象(通过引用或值)operator +=.如果通过引用返回,那么它与上面的例子相同(只是int x变成MyClass x,int& getX()变成MyClass& getX()).如果按值返回,虽然可以,但没有用或导致不良设计(如果MyClasss operator +=改变某些全局状态).