c++ - Return using this pointer vs return by value -
what difference between returning pointer , return value.
i try explain case example..
i have following code
#include <iostream> using namespace std; class count { private: int count; public: //constructor count():count(0) { cout << "constructor called" << endl; } count(count& c):count(c.count) { cout << "copy constructor called" << endl; } //destructor ~count() { cout << "destructor called" << endl; } count operator ++ () { count++; count temp; temp.count = count; return temp; //return *this; } //display value. void display() { cout << "the value of count " << count << endl; } }; int main() { count c; count d; c.display(); d.display(); d=++c; c.display(); d.display(); return 0; }
i have following function in class
count operator ++ () { count++; count temp; temp.count = count; return temp; }
when use above function, see normal constructor called when returning value.
but change function below
count operator ++ () { count++; return *this; }
the above function calls copy constructor when returning pointer.
can me understand difference.
your return *this
not "return pointer". this
pointer, *this
not pointer, object of count
type. return *this
returns current value of *this
value, i.e. returns copy of count
object.
the return temp
version same thing, unexplainable reason first stores current state of *this
in local variable temp
, returns temp
. don't know point of doing is.
both variants same thing. both return value in case. both versions call copy constructor (at least conceptually, call can optimized out).
Comments
Post a Comment