[Inside the C++ Object Model (Stanley B. Lippman, 1996)]
However, some compiler optimize this by not calling copy constructor for
returning the local stack object variable.
#include <stddef.h> #include <iostream> #include <ostream> #include <cstdio> using namespace std; class Verbalsaint{ int a; public: Verbalsaint(){ } Verbalsaint(const Verbalsaint& rval){ cout <<"in Constructor" << endl; a = rval.a; } Verbalsaint& operator=(const Verbalsaint& rval){ cout <<"in operator =" << endl; a = rval.a; } }; Verbalsaint callme(){ Verbalsaint b; return b; } int main(){ Verbalsaint a=callme(); }
Reference:
What about returning a local variable by value?
Named Return Value Optimization in Visual C++ 2005
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.