Я работаю с NS2 на языке C ++.
Я вижу следующий код, который я не могу понять это !!!!
ch->size() += IP_HDR_LEN;
Спасибо за вашу помощь…
Метод 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()
). Если возвращается по значению, хотя можно, но бесполезно или приведет к плохому дизайну (если MyClass
s operator +=
меняет какое-то глобальное состояние).