ns2 — что это значит, когда функция используется в качестве левого операнда в переполнении стека

Я работаю с NS2 на языке C ++.
Я вижу следующий код, который я не могу понять это !!!!

ch->size() += IP_HDR_LEN;

Спасибо за вашу помощь…

0

Решение

Метод ch->size() возвращается ссылка (lvalue) к чему-то, что используется в выражении.

Например:

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() ). Если возвращается по значению, хотя можно, но бесполезно или приведет к плохому дизайну (если MyClasss operator += меняет какое-то глобальное состояние).

7

Другие решения


По вопросам рекламы [email protected]