在C+;中,函数用作左操作数意味着什么+; 我正在用C++语言处理NS2。 我看到下面的代码,我无法理解它 ch->size() += IP_HDR_LEN;

在C+;中,函数用作左操作数意味着什么+; 我正在用C++语言处理NS2。 我看到下面的代码,我无法理解它 ch->size() += IP_HDR_LEN;,c++,ns2,operand,C++,Ns2,Operand,感谢您的帮助…方法ch->size()返回对表达式中使用的内容的引用(左值) 例如: class A{ int x; public: int& getX(){ return x;} }; 然后它可以用作 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 ex

感谢您的帮助…

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

例如:

class A{
 int x;
 public:
  int& getX(){ return x;}
};
然后它可以用作

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
关于你的问题:

在C语言中,函数用作左操作数意味着什么++

此处返回值用作左操作数,而不是函数。返回类型是对表示左值的某物的引用,可以用作LHS

编辑

正如@dlf所指出的,
size()
可以返回重载
operator+=
的任何类的对象(通过引用或通过值)。如果通过引用返回,则与上面的示例相同(只是
int x
变成
MyClass x
int&getX()
变成
MyClass&getX()
)。如果通过值返回,虽然可以,但没有用处或导致糟糕的设计(如果
MyClass
s
operator+=
更改了一些全局状态)。

方法
ch->size()
返回对表达式中使用的某个对象的引用(左值)

例如:

class A{
 int x;
 public:
  int& getX(){ return x;}
};
然后它可以用作

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
关于你的问题:

在C语言中,函数用作左操作数意味着什么++

此处返回值用作左操作数,而不是函数。返回类型是对表示左值的某物的引用,可以用作LHS

编辑


正如@dlf所指出的,
size()
可以返回重载
operator+=
的任何类的对象(通过引用或通过值)。如果通过引用返回,则与上面的示例相同(只是
int x
变成
MyClass x
int&getX()
变成
MyClass&getX()
)。如果通过值返回,虽然可以,但没有任何用处或导致糟糕的设计(如果
MyClass
s
operator+=
更改了一些全局状态)。

函数调用返回可以用
+=
递增的内容。它可能是对某物的左值引用。根据ch->size()返回的内容,可能是指针、左值、引用等。。您不明白的是,它显然是在添加IP头长度查找
ch
的类型,并显示.size()函数的声明。可能它会返回对成员变量的引用通常这意味着
size()
函数会返回对
ch
任何类型的内部成员的引用;它使用函数的返回值。函数调用返回的值可以用
+=
递增。它可能是对某物的左值引用。根据ch->size()返回的内容,可能是指针、左值、引用等。。您不明白的是,它显然是在添加IP头长度查找
ch
的类型,并显示.size()函数的声明。可能它会返回对成员变量的引用通常这意味着
size()
函数会返回对
ch
任何类型的内部成员的引用;它使用的是函数的返回值。关于
size()
返回左值引用,您几乎肯定是正确的。但是如果你真的想学究式地对待它(嘿,谁不呢?),它可能会返回一个重载
操作符+=
的类类型。@dlf,我想答案涵盖了它。您只需将
intx
替换为
MyClass x
。虽然可以通过值返回,而不是引用,但它没有任何用处(但是可以+1)。就像我说的,只是有点迂腐:)。我能想象的让class对象通过value返回的唯一可能的“用法”是如果重载+=更改了全局/静态状态。那将是一个可怕的设计,但我见过更糟的!关于返回左值引用的
size()
几乎肯定是正确的。但是如果你真的想学究式地对待它(嘿,谁不呢?),它可能会返回一个重载
操作符+=
的类类型。@dlf,我想答案涵盖了它。您只需将
intx
替换为
MyClass x
。虽然可以通过值返回,而不是引用,但它没有任何用处(但是可以+1)。就像我说的,只是有点迂腐:)。我能想象的让class对象通过value返回的唯一可能的“用法”是如果重载+=更改了全局/静态状态。那将是一个可怕的设计,但我见过更糟的!