| A MyMethod (B &var) { A retVal; retVal.member = var.value + bar(var); return retVal; } |
| valA = MyMethod(valB); |
| A MyMethod (A &_hiddenArg, B &var) { A retVal; retVal.A::A(); // retVal的构造函数 retVal.member = var.value + bar(var); _hiddenArg.A::A(retVal); // A的复制构造函数 return; retVal.A::~A(); // retVal的析构函数 } |
| A MyMethod(A &_hiddenArg, B &var) { _hiddenArg.A::A(); _hiddenArg.member = var.value + bar(var); Return } |
| #include <stdio.h> class RVO { public: RVO(){printf("I am in constructor/n");} RVO (const RVO& c_RVO) {printf ("I am in copy constructor/n");} ~RVO(){printf ("I am in destructor/n");} int mem_var; }; RVO MyMethod (int i) { RVO rvo; rvo.mem_var = i; return (rvo); } int main() { RVO rvo; rvo=MyMethod(5); } |
http://dev.xuezhishi.net/program/VC/2007-06-21/18464.html