C++構造函數上的一點疑惑的解析

課上臨時想到的ios

就是相似第41行的賦值語句,會生成一個臨時變量(其它代碼不用管)ide

通過實驗發現函數

這個臨時變量的生命週期只限於這個語句,語句結束後就會調用析構函數優化

並且若是寫成spa

  1. kk::a d=kk::a(b);

則不會看見這個臨時變量的生成,估計被編譯器給優化掉了生命週期

  
  
  
  
  1. #include <iostream> 
  2. using namespace std; 
  3. namespace kk 
  4. int count=1; 
  5. class a 
  6. public
  7.       int counts; 
  8.       a(); 
  9.       ~a(); 
  10.       a(const a&); 
  11.  
  12.  
  13.       }; 
  14.       } 
  15. kk::a::a() 
  16. {      
  17.       counts=kk::count; 
  18.       cout<<"creat the"<<counts<<"th instance"<<"from creat"<<endl; 
  19.       kk::count++; 
  20.        
  21.       } 
  22. kk::a::a(const a& b) 
  23.      counts=kk::count; 
  24.       cout<<"creat the"<<counts<<"th instance"<<" from copy"<<endl; 
  25.       kk::count++;   
  26.           } 
  27. kk::a::~a() 
  28.        cout<<"delete the"<<counts<<"th instance"<<endl; 
  29.        } 
  30. void kkk() 
  31. {   kk::a b; 
  32.     cout<<b.counts<<endl;   
  33.     kk::a c(b); 
  34.     cout<<c.counts<<endl; 
  35.     kk::a d; 
  36.     cout<<d.counts<<endl; 
  37.     d=kk::a(b); 
  38.     d.counts=3; 
  39.      
  40. int main() 
  41.    kkk(); 
  42.    char sss; 
  43.    cin>>sss; 
相關文章
相關標籤/搜索