| 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 constructorn");} RVO (const RVO& c_RVO) {printf ("I am in copy constructorn");} ~RVO(){printf ("I am in destructorn");} int mem_var; }; RVO MyMethod (int i) { RVO rvo; rvo.mem_var = i; return (rvo); } int main() { RVO rvo; rvo=MyMethod(5); } |
| I am in constructor I am in constructor I am in copy constructor I am in destructor I am in destructor I am in destructor |
| I am in constructor I am in constructor I am in destructor I am in destructor |
| #include <stdio.h> class A { public: A() {printf ("A: I am in constructorn");i = 1;} ~A() { printf ("A: I am in destructorn"); i = 0;} A(const A& a) {printf ("A: I am in copy constructorn"); i = a.i;} int i, x, w; }; class B { public: A a; B() { printf ("B: I am in constructorn");} ~B() { printf ("B: I am in destructorn");} B(const B& b) { printf ("B: I am in copy constructorn");} }; A MyMethod() { B* b = new B(); A a = b->a; delete b; return (a); } int main() { A a; a = MyMethod(); } |
| A: I am in constructor A: I am in constructor B: I am in constructor A: I am in copy constructor B: I am in destructor A: I am in destructor A: I am in copy constructor A: I am in destructor A: I am in destructor A: I am in destructor |
| A: I am in constructor A: I am in constructor B: I am in constructor A: I am in copy constructor B: I am in destructor A: I am in destructor A: I am in destructor A: I am in destructor |
用户评论