Mega Code Archive

 
Categories / C++ Tutorial / Operator Overloading
 

Lvalues and rvalues

#include <iostream> class number { public:   number(int i = 0) : value(i) {   }   operator int() const {     return value;   }   number& operator=(const number& n) {     std::cout<<"=";     value = static_cast<int>(n);     return *this;   } private:   int value; }; number operator+(const number& x, const number& y) {   std::cout<<"+";   return number(static_cast<int>(x) + static_cast<int>(y)); } int main() {   number a[10], b(42);   number* p;   a;           // lvalue   a[0];        // lvalue   &a[0];       // rvalue   *a;          // lvalue   p;           // lvalue   *p;          // lvalue   10;          // rvalue   number(10);  // rvalue   a[0] + b;    // rvalue   b = a[0];    // lvalue } +=