------
#先說明,回傳時通常傳參考就沒這些問題,故意這樣寫只是想搞懂
現在覺得C++好難= =,腦袋已經混亂了,求指點明晰
------
最近學到move constructor以後,看了看Rvalue的定義,試了下code,
發現VC++與G++的行為不同,下面有我寫的簡單的code,希望能得到解
答,如果不好回答,希望能有連結或關鍵字讓我查詢。
我猜可能是function return object沒學好,先舉例說明我的想法:
class A{
    A& append(int value){
        //...append value to A
        return *this;
    }
    A(const A& a){
        //...copy a to *this
    }
}
A a;
A b = a.append(1);
以上面這行來說,會有兩個動作
1.使用a.append(1)時的return,
  A& temp = *this;
2.使用b.A(const A& a)時,
  const A& a = temp;
如果對的話往下看才有意義,我下面的傳參數
都是靠這個邏輯傳的。
接下來看code:
 以這個例子來說,我覺得兩者output都不對= ='
以這個例子來說,我覺得兩者output都不對= ='
我認為的答案如下:
Constructor a            //A b(objName);
Deep copy when initial.  //A temp = b; return時
Destructor a             //出copy()時,解構a
------------------------------------
Constructor b            //A b(objName);
Shadow copy when initial.//A temp = b; RVO的關係,改成move
Deep copy when initial.  //A c(temp); 用C來初始化建構
------------------------------------
                         //main結束時全部解構
Destructor default       //因為我複製時沒改到_objName,預設
Destructor a             //最上面的a
--