class - () operator overloading c++ -
i have confusion calling of overloaded operator().
there 2 functions in class matrix:
float operator()(int, int) const; // suppose call function rvalue float& operator()(int, int); // , lvalue
now when call them in main, in way :
matrix m2(3, 2); m2(0, 0) = 1; // here lvalue should called int c=m2(0,0); // , here rvalue
but in both cases calls lvalue function. why??
if comment lvalue function , do
int c=m2(0,0); // calls rvalue function
but in presence of both functions, calls lvalue function. why?
hope, question clear.
rvalues of class types not const
might think. const
overload called on const
qualified objects, otherwise least qualified version preffered.
what can overload ref-qualifiers (c++11 only):
float operator()(int, int) && const; // called when object rvalue float& operator()(int, int) &; // called when object lvalue
Comments
Post a Comment